2013-04-25 46 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

相关问题