2016-03-02 141 views
-3

我只是想抓住scipy.optimize.curve_fit函數拋出的ValuError,但我意識到它不被認爲是一個有效的異常。scipy.optimize曲線擬合

這裏是我的代碼:

 from scipy.optimize import curve_fit 

    ksi=((185/((xdata_1/420)**2 + (420/xdata_1)**2 + 90)) + (27/((xdata_1/800)**4 + (800/xdata_1)**4 + 5.50)) + (0.005/((xdata_1/2200)**2 + (2200/xdata_1)**2 - 1.95)) + (0.012/((xdata_1/180000)**2 + (180000/xdata_1)**2 -1.8))+ (0.01/((xdata_1/97000)**2 + (97000/xdata_1)**2 -1.95)) + (0.03/((xdata_1/250000)**2 + (250000/xdata_1)**2)) ) 

    def power(xdata_1,cc,dd,gg): 
     global ksi 
     return cc*(xdata_1**(dd))*(10**(-1.572*gg*(ksi))) 

這是一個完整的警告,我得到:

ValueError異常:操作數無法與形狀(455)一起廣播(1772)

我該如何解決這個問題?

+1

如果問題出現在scipy curve_fit中,你能發表一個包含代碼部分的例子嗎? – Chris

+0

不清楚你在問什麼。 「我只是想抓住一個ValuError」,但是在你的代碼中沒有任何事情,「這是我得到的完整警告:ValueError ...」這是一個警告還是錯誤?哪一行代碼觸發它? 「我如何解決這個問題?」究竟是什麼問題? – Goyo

+0

考慮到ksi只取決於xdata_1,我不認爲有必要使用全局的方式來渾水。至於你的警告,cc,dd,gg或xdata_1或ksi之一的長度與其他長度不同,所以你的電源功能會在廣播中遇到麻煩。 –

回答

0

只是猜測,因爲你沒有上傳整個代碼。認爲我前段時間有同樣的問題。我意識到我一直在使用列表而不是Numpy數組。轉換爲數組爲我修復了它。數組的大小也必須相同。