Numpy渐变,间距不均匀

时间:2018-05-25 10:24:34

标签: numpy gradient

我发生了一些错误:

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()

这就是我得到的:

enter image description here

如果使用线性间隔的数组而不使用参数x,则可以正常工作。

有什么建议吗?

1 个答案:

答案 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编写的代码可能会在早期版本上运行,并且输出错误且没有错误。