如何解释numpy.gradient?

6
2个回答

14
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. ])


对于第一项,它使用正向(当前 -> 下一个)差异:
- 上一个数字:无
- 当前(第一个)数字:1
- 下一个数字:2
(2 - 1) / 1 = 1。

对于最后一项,它使用反向(上一个 -> 当前)差异:
- 上一个数字:11
- 当前(最后一个)数字:16
- 下一个数字:无
(16 - 11) / 1 = 5。

而对于中间的项目,则应用中央差分:
- 上一个数字:1
- 当前数字:2
- 下一个数字:4
(4 - 1) / 2 = 1.5

- 上一个数字:2
- 当前数字:4
- 下一个数字:7
(7 - 2) / 2 = 2.5
...
等等:-
(11 - 4) / 2 = 3.5
(16 - 7) / 2 = 4.5

正向和反向差异的差异被样本距离(默认=1)除以,但是中央差异的距离为两倍,以获得适当的梯度。


2
为什么没有人像你这样解释这个问题。 - Diego Silvera

5

当运行np.diff时,您期望的输出就是您将得到的内容,但会少一个元素:

np.diff(arr)
>>> array([ 1.,  2.,  3.,  4.,  5.])

np.gradient函数会取出第i个元素,并计算该元素与+1-1元素的差值的平均值,对于边界的值只能使用一个点。所以第二个值,1.5,是由(2-1)和(4-2)的平均值计算得到的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接