2013-04-25 103 views
2

我試圖獲得最適合我的腳本生成的某些數據的行。這是我有:ValueError:使用optimize.curve時,操作數無法與形狀(0)(26)一起廣播

import numpy as np 
import scipy as sp 
. 
. 
. 
def func(x, a, b, c): 
    return a*np.exp(-b*x) + c 
popt, pcov = sp.optimize.curve_fit(func, numgelt, turnsG) 

我不斷收到此錯誤:

ValueError: operands could not be broadcast together with shapes (0) (26) 

我已經檢查過這兩個陣列(numgelt和turnsG)是絕對相同的尺寸。我也確保了這些條目是浮動的。謝謝!

回答

0
ValueError: operands could not be broadcast together with shapes (0) (26) 

意味着你的第一個數組的長度爲0.從你的帖子來看,最明顯的就是這種情況以及引發ValueError的錯誤。

3

我有同樣的問題,直到我意識到我一直在使用列表而不是Numpy數組。轉換爲數組爲我修復了它。

+0

猜想爲什麼這可能是正確的答案:我相信可能會有一些內部增加之間的迭代,在列表的情況下,被視爲串聯,而不是逐個元素的添加。根據錯誤信息,我不認爲這個錯誤是立即發現的,但這是列表和數組之間的明顯區別。 – EvenAdam 2015-06-10 15:14:12

+0

我的天啊,我不能相信這樣一個簡單的修復會導致這樣一個晦澀的錯誤!感謝發佈! – Demis 2015-10-07 17:30:13

+0

我對'numpy.leastsq()'有同樣的問題,並且將我的x/y列表參數和初始參數包裝在'np.array()'中解決了這個問題。也許它將初始參數乘以x/y數組,所以如果其中一個是列表(其維數爲'0'),而另一個是數組,則會得到這個維度 - 不匹配錯誤。如果numpy剛剛說「這不是一個數組,尺寸= 0!」,它已經很好了!或者其他的東西! – Demis 2015-10-07 18:07:27

相關問題