在文档的第一个示例中 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)
???
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),但中心差异的距离是获得适当梯度的两倍.
您期望的输出是运行时得到的结果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)。
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |