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

and*_*sdr 3 python numpy

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

import numpy as np
arr = np.array([1, 2, 4])
arrgrad = np.gradient(arr)
Run Code Online (Sandbox Code Playgroud)

我希望在这里arrgrad获得价值

[ 1.   1.5  2. ]
Run Code Online (Sandbox Code Playgroud)

arrgrad[0] = (2-1)/1 = 1
arrgrad[1] = (4-1)/2 = 1.5  
arrgrad[2] = (4-2)/1 = 2
Run Code Online (Sandbox Code Playgroud)

但我得到了结果

[ 0.5  1.5  2.5]
Run Code Online (Sandbox Code Playgroud)

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

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

pse*_*bic 5

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

但是,numpy网站上的文档不包括1.9.0文档,最多只有1.8.1,所以要查看可以使用的正确文档np.source(np.gradient)print(np.gradient.__doc__).