在文档的第一个示例中 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. ])
输出应该是:
array([ 1. , 1., 2., 3., 4., 5. ])
???
答案 0 :(得分:7)
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
输出:
数组([1,1.5,2.5,3.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),但是中心差异的距离是获得适当梯度的两倍。
答案 1 :(得分:3)
您期望输出的内容是运行np.diff
时会得到的结果,但是会缩短一个元素:
np.diff(arr)
>>> array([ 1., 2., 3., 4., 5.])
np.gradient
看起来采用第i个元素并查看(i+1)
'与i
'元素和(i-1)
'的差异之间的平均值th与i
'元素。对于边缘值,它只能使用一个点。因此,1.5
的第二个值来自平均(2-1)
和(4-2)
。