numpy.diff的输出是错误的

时间:2017-03-11 16:26:38

标签: python numpy differentiation

这是我的问题: 我试图使用numpy计算(数值)导数,但我发现函数numpy.diff返回的值有一些问题(和numpy.gradient一样)。我发现价值观是完全错误的! 这是代码示例:

import numpy as np
x = np.linspace(-5, 5, 1000)
y = x**2
yDiff = np.diff(y)
print y[0], yDiff[0]

此脚本的输出为:

25.0 -0.0999998997997

第一个值是正确的,第二个值恰好比应该的那个小100倍(考虑近似值)! 我做了不同的尝试,这不是一个与功能边界相关的问题,而这100个因素似乎是系统性的...... 这可能与np.diff正在做的一些规范化有关吗?或许我只是在没有注意到的情况下错过了一些重要的事 谢谢你的帮助

1 个答案:

答案 0 :(得分:4)

np.diff没有计算它只是计算有限差分的导数;你必须自己考虑间距。尝试

np.diff(y) / (x[1] - x[0])

顺便说一下,np.linspace有一个retstep关键字,在这种情况下很方便:

x, dx = np.linspace(-5, 5, 100, retstep=True)
...
np.diff(y) / dx