2014-12-29 19 views
1

我嘗試轉換MATLAB代碼到Python我在哪裏卡住瞭如何導入此行的Python:NumPy的:ValueError異常:太小了深度的對象所需的陣列

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

你能張貼一些樣本數據嗎? [文檔](http://docs.scipy.org/doc/numpy/reference/generated/numpy.interp.html)表示結果與給定的插值範圍具有相同的長度。 – jkalden

回答

2

當我使用相同的排序號的八度,我收到了類似的錯誤:

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)看到更多關於它的輸入。