我发生了一些错误:
import numpy as np
import matplotlib.pyplot as plt
x = np.concatenate((np.linspace(0,1,100),np.linspace(1,2,50)));
f = np.power(x,2);
df = 2*x;
Df = np.gradient(f,x);
plt.plot(x,df,'r', x,Df,'b');plt.show()
这就是我得到的:
如果使用线性间隔的数组而不使用参数x,则可以正常工作。
有什么建议吗?
答案 0 :(得分:1)
我认为这是因为1.13之前的numpy版本期望“ x”参数是恒定的网格间距(请参见https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.gradient.html#numpy.gradient)。即使较早的版本期望标量dx,也不会进行检查,结果是np.gradient(f)/ x,这是有效的除法。这很烦人,因为为numpy 1.13编写的代码可能会在早期版本上运行,并且输出错误且没有错误。