Numpy:ValueError:所需数组的深度太小的对象

时间:2014-12-29 08:14:05

标签: python numpy

我正在尝试将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个元素的浮点数组?

如果我理解正确,我该如何纠正?我尝试了在谷歌找到的方法,但它只是不起作用。

1 个答案:

答案 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)以了解有关其输入的更多信息。