如何解读numpy.gradient?

Ka-*_*Yip 2 numpy

在文档的第一个示例中 http://docs.scipy.org/doc/numpy/reference/generated/numpy.gradient.html

x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
np.gradient(x)
array([ 1. ,  1.5,  2.5,  3.5,  4.5,  5. ])
Run Code Online (Sandbox Code Playgroud)

不是输出应该是:

array([ 1. ,  1.,  2.,  3.,  4.,  5. ])
Run Code Online (Sandbox Code Playgroud)

???

swa*_*hai 8

Numpy-gradient 在适当的地方使用forward,backward和central差异.

输入:

x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
np.gradient(x)      # this uses default distance=1
Run Code Online (Sandbox Code Playgroud)

输出:

数组([1,1.5,2,2.5,4.5,5.])


对于第一个项目,它使用向前差异:
(2 - 1)/ 1 = 1.

对于最后一个项目,它使用向后差异:
(16 - 11)/ 1 = 5.

并且,对于其间的项目,中心差异是应用:
(4 - 1)/ 2 = 1.5
(7 - 2)/ 2 = 2.5
(11 - 4)/ 2 = 3.5
(16 - 7)/ 2 = 4.5

差异除以前后采样距离差异(默认值= 1),但中心差异的距离是获得适当梯度的两倍.

  • 为什么没有人像你一样解释这个 (2认同)

osc*_*ury 5

您期望的输出是运行时得到的结果np.diff,但短了一个元素:

np.diff(arr)
>>> array([ 1.,  2.,  3.,  4.,  5.])
Run Code Online (Sandbox Code Playgroud)

np.gradient(i+1)looks 获取第 i 个元素,并查看第'th 与i'th 元素以及第(i-1)'th 与i'th 元素之间差异的平均值。对于边缘值,它只能使用一个点。所以第二个值来自1.5于(2-1)和的平均(4-2)。