【问题标题】:How to interpret numpy.gradient?如何解释 numpy.gradient?
【发布时间】:2015-04-22 00:55:28
【问题描述】:

在文档的第一个示例中 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. ])

???

【问题讨论】:

    标签: numpy


    【解决方案1】:

    Numpy-gradient 在适当的情况下使用 forwardbackwardcentral 差异。

    输入:

    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),但中心差异的距离的两倍以获得适当的梯度。

    【讨论】:

    • 为什么没有人像你这样解释这个
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-09
      • 2012-05-03
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 2020-02-07
      • 2015-07-03
      相关资源
      最近更新 更多