在搜索numpy.gradient()
用法时,我注意到了这一点。似乎从numpy 1.13开始,该函数对输入参数的处理方式与以前的版本不同。这是一个简单的例子:
import numpy as np
x=np.linspace(0,10,100)
y=np.sin(x)
dx=np.gradient(x)
grad1=np.gradient(y,dx)
print grad1
grad2=np.gradient(y,x)
print grad2
我在numpy 1.13和1.11.3中测试过。
在1.13中,gradient(array1, array2)
将array2
视为array1
的坐标(x)。但在1.11.3中,它将array2
视为坐标的区分(dx)。因此grad1
适用于1.11.3,grad2
适用于1.13。
我认为这是一个相当危险的陷阱,如果使用不同版本的numpy运行相同的代码,人们可能会得到错误的结果。或者我错过了一些可以清除这种含糊之处的东西?