Curve fitting ValueError:使用optimize.curve时,操作数无法与形状(0)(26)一起广播

Curve fitting ValueError:使用optimize.curve时,操作数无法与形状(0)(26)一起广播,curve-fitting,Curve Fitting,我正在尝试为脚本生成的某些数据获取一个最合适的行。这就是我所拥有的: 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 toge

我正在尝试为脚本生成的某些数据获取一个最合适的行。这就是我所拥有的:

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)的大小完全相同。我还确保了条目是浮动的。谢谢大家!

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

表示第一个数组的长度为0。从你的帖子来看,最明显的是这种情况和引起错误的原因

我也遇到了同样的问题,直到我意识到我一直在使用列表而不是Numpy数组。转换为数组为我解决了这个问题。

猜猜这可能是正确答案的原因:我相信在iterables之间可能存在一些内部加法,在列表的情况下,这些加法被视为串联,而不是逐元素加法。根据错误消息,我认为不会立即发现错误,但这是列表和数组之间的明显区别。天哪,我不敢相信如此简单的修复会导致如此模糊的错误!谢谢你的发帖!!!我在
numpy.leastsq()
中遇到了同样的问题,将我的x/y列表参数和初始参数包装在
np.array()
中解决了这个问题。可能是将初始参数乘以x/y数组,因此如果其中一个是列表(维度
0
),而另一个是数组,则会得到此维度不匹配错误。如果numpy只是说“这不是一个数组,维度=0!”或其他什么的话,那就太好了!