【问题标题】:scipy.optimize curve fittingscipy.optimize 曲线拟合
【发布时间】: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


【解决方案1】:

只是猜测,因为您没有上传整个代码。想想我前段时间也有同样的问题。我意识到我一直在使用列表而不是 Numpy 数组。转换为数组为我修复了它。数组也需要相同的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-20
    • 2017-02-26
    • 2018-11-04
    • 2021-01-19
    • 2015-03-02
    • 1970-01-01
    • 2013-09-04
    • 2013-11-08
    相关资源
    最近更新 更多