关于如何计算边界(开始和结束)值(我知道它使用第一个差异,而中心值使用中心差异计算),函数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位.)