一维Numpy阵列的导数

时间:2019-02-12 12:23:03

标签: python numpy numpy-ndarray

如果我有一个一维numpy数组,并且想返回一个包含相对于x的一阶导数的一维numpy数组,那么我是否要使用np.gradient(x)?我想我做错了事

这是我的代码,但告诉我我的答案不正确。

def dfunc(x):
'''
Parameters
x: 1D numpy array
Returns
df: 1D numpy array containing first derivatives wrt x
'''
# WRITE YOUR CODE HERE
df = np.gradient(x)
return df

1 个答案:

答案 0 :(得分:1)

numpy梯度函数计算梯度的二阶中心有限差分近似值。

您可以在Wikipedia finite difference page中进一步阅读该方法。

让我们看一个简单的例子

f = np.linspace(0,100,1000) * 2

的诅咒f的梯度应为2,但

np.gradient(f)

将返回值为0.2002002的完整数组,这就是因为np.gradient元素之间的默认间距为1.0,所以要获得正确的答案,我们应在f数组中指定元素之间的间距。

np.gradient(f, varargs=np.linspace(0,100, 1000)[1])

将按预期返回数组填充为2.0