函数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中的numpy.gradient()行为(从base.py获得)似乎产生了正确的结果。
上面描述的错误行为是错误的结果吗?(我使用的是Python 3.4.2,64位。)
发布于 2014-10-14 14:32:51
显然,332d628改变了梯度的计算方式,在1.8.1到1.9.0之间,因此现在也使用二阶精确近似来计算边界元素,而以前它们只是一阶精确。
但是,numpy网站上的文档不包含1.9.0文档,最多只有1.8.1,因此要查看适当的文档,可以使用np.source(np.gradient)或print(np.gradient.__doc__)。
https://stackoverflow.com/questions/26361007
复制相似问题