关于如何计算边界(开始和结束)值(我知道它使用第一个差异,而中心值是计算的),函数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位。)
答案 0 :(得分:5)
显然,计算梯度的方式在332d628之间在1.8.1和1.9.0之间变化,因此边界元素现在也使用二阶精确近似计算,而之前它们只是第一次 - 订单准确。
但是,numpy网站上的文档不包含1.9.0文档,最多只包含1.8.1,因此要查看适当的文档,您可以使用np.source(np.gradient)
或print(np.gradient.__doc__)
。