【发布时间】:2016-06-15 08:11:45
【问题描述】:
我只是试图捕捉 scipy.optimize.curve_fit 函数抛出的 ValuError,但我意识到它未被识别为有效异常。
这是我的代码:
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,) 一起广播
我该如何解决这个问题?
【问题讨论】:
-
如果问题出在 scipy curve_fit 上,您能否发布一个包含该部分代码的示例?
-
不清楚你在问什么。 “我只是想捕获一个 ValuError”,但您的代码中没有任何内容,“这是我得到的完整警告:ValueError ...”这是警告还是错误?哪一行代码触发了它? “我该如何解决这个问题?”真正的问题是什么?
-
鉴于 ksi 仅依赖于 xdata_1,我认为没有必要在其上使用全局变量。至于您的警告,cc、dd、gg 或 xdata_1 或 ksi 之一的长度与其他的长度不同,因此您的幂函数在广播中遇到麻烦。
标签: python scipy curve-fitting