我正在尝试将MATLAB代码转换为Python,我不知道如何将此行导入Python:
YDFA_xa_p = interp1(data(:,1),data(:,2),YDFA_lam_p*1e9,'linear')*1e-24;
现在对于Python我已将其更改为:
YDFA_xa_p = numpy.interp(data[:, 1], data[:, 2], YDFA_lam_p * 1e9) * 1e-24
data[:,1] and data[:,2] and YDFA_lam_p values are:
[ 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.] [ 3. 3. 3. 3. 3. 3. 3. 3. 3. 3.] 915.0
我看到的问题是变量YDFA_lam_p是一个浮点变量,而它期望一个10个元素的浮点数组?
如果我理解正确,我该如何纠正?我尝试了在谷歌找到的方法,但它只是不起作用。
答案 0 :(得分:2)
当我在Octave中使用相同类型的数字时,我得到了类似的错误:
octave:32> interp1([2,2,2,2],[3,3,3,3],900)
warning: interp1: multiple discontinuities at the same X value
error: mkpp: at least one interval is needed
你已经给了它一点(反复),并要求它在左侧场中插入一些值。
正确的样本使用是:
octave:32> interp1([1,2,3,4,5],[3,3.5,2,2.5,1],2.33,'linear')
ans = 3.0050
等效的Python(注意不同的变量顺序):
In [364]: np.interp(2.33,[1,2,3,4,5],[3,3.5,2,2.5,1])
Out[364]: 3.005
阅读help(np.interp)
以了解有关其输入的更多信息。