numpy.gradient()似乎产生错误的边界值(使用第一个差异)

时间:2014-10-14 12:38:13

标签: python numpy

关于如何计算边界(开始和结束)值(我知道它使用第一个差异,而中心值是计算的),函数numpy.gradient()(numpy 1.9.0)似乎存在问题。使用中心差异)。例如,考虑以下示例:

import numpy as np
arr = np.array([1, 2, 4])
arrgrad = np.gradient(arr)

我希望arrgrad能够获得值

[ 1.   1.5  2. ]

arrgrad[0] = (2-1)/1 = 1
arrgrad[1] = (4-1)/2 = 1.5  
arrgrad[2] = (4-2)/1 = 2

但我得到了结果

[ 0.5  1.5  2.5]

然而,版本1.8.1(从https://github.com/numpy/numpy/blob/v1.8.1/numpy/lib/function_base.py获得)的numpy.gradient()行为似乎产生了正确的结果。

上面描述的错误行为是否是错误的结果? (我使用的是Python 3.4.2,64位。)

1 个答案:

答案 0 :(得分:5)

显然,计算梯度的方式在332d628之间在1.8.1和1.9.0之间变化,因此边界元素现在也使用二阶精确近似计算,而之前它们只是第一次 - 订单准确。

但是,numpy网站上的文档不包含1.9.0文档,最多只包含1.8.1,因此要查看适当的文档,您可以使用np.source(np.gradient)print(np.gradient.__doc__)