在文档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. ])
???
在文档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. ])
???
2条答案
按热度按时间5lhxktic1#
数字渐变在适当的情况下使用
forward
、backward
和central
差值。输入:
输出:
数组([ 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),但对于中心差异,将距离除以两倍,以获得适当的梯度。
zbwhf8kr2#
您所期望的输出与运行
np.diff
时所得到的输出相同,但是少了一个元素:np.gradient
looks取第i个元素,并查看第(i+1)
个元素与第i
个元素的差值以及第(i-1)
个元素与第i
个元素的差值之间的平均值。对于边缘值,它只能使用一个点。因此,第二个值1.5
来自(2-1)
和(4-2)
的平均值。