2014-03-26 54 views
0

我的代碼看起來是這樣的(除了我改變了數字由於它們最初是指變量):Python的ValueError異常:值過多解壓 - polyval功能

x = array([1,2,3,4,5]) 
y = array([1,2,3,4,5]) 
scatter(qnkt,Is) 
p1 = polyfit(x, y, 1) 
y,delta = polyval(p1,x) 
graph1 = poly1d(p1) 
ys = graph1(qnkt) 
plot(x, ys) 

我得到一個錯誤:

y,delta = polyval(p1,qnkt) 
ValueError: too many values to unpack 

任何人都可以解釋爲什麼這是?我正在嘗試使用polyval來計算錯誤(標準偏差)。

回答

0

你從哪裏得到polyval功能?這不是standard library的一部分。您似乎將不正確的參數傳遞給它。

您的代碼也不對應錯誤所指的代碼行。考慮到你在代碼中沒有解釋任何變量,甚至建議什麼是正確的都是非常困難的。

2

在Python中,當解包參數或其他集合時 - 左側的名稱數量必須與右側的項目數量相匹配。如果在的權利有不平衡,你會得到這個例外。

下面是一個例子:

>>> a,b = (1,2,3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack 

如果你在左邊的不平衡,你會得到一個不同的異常:

>>> a,b = (1,) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: need more than 1 value to unpack 

現在我們知道發生了什麼事你行。 polyval方法正在返回一個具有多於2個值的對象。

-1
>>> polyval(p1,x) 
array([ 1., 2., 3., 4., 5.]) 

,你可以看到,numpy.polyval只返回一個數組,我相信這是Ÿ,並沒有三角洲,而如果你是移植的MATLAB代碼你所期望的。

+0

你能說......任何東西......除了代碼粘貼,以幫助人們理解? – radpin

+0

@radpin我的回覆是試圖證明失敗的明顯原因 - 函數調用的結果與預期不同。你是對的,對那些不太瞭解python的人來說並不明顯。我已經更新了我的回覆,希望這會幫助您和麪臨同樣問題的更多人。 – Arseniy

相關問題