Python scipy.optimize curve_fit函数错误:';西格玛和x27;形状不正确

Python scipy.optimize curve_fit函数错误:';西格玛和x27;形状不正确,python,numpy,optimization,scipy,Python,Numpy,Optimization,Scipy,我正在使用scipy.optimize来拟合带有一个模型和两个参数的实验数据曲线。我的代码是: import numpy as np import scipy as sp import scipy.stats as stats import matplotlib as mpl import matplotlib.pyplot as plt mpl.get_backend() from scipy.optimize import curve_fit %matplotlib inline f = o

我正在使用scipy.optimize来拟合带有一个模型和两个参数的实验数据曲线。我的代码是:

import numpy as np
import scipy as sp
import scipy.stats as stats
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.get_backend()
from scipy.optimize import curve_fit
%matplotlib inline
f = open('50Hz15kO.txt') #raw data
header = f.readline()
time = np.zeros(115)
vcap = np.zeros(115)
vso = np.zeros(115)
udata = np.zeros(115)
i = 0

for line in f:
line = line.strip()
columns = line.split()
for i in range(115):
    vcap[i] = float(columns[1])
    time[i] = float(columns[0])
    vso[i] = float(columns[3])
    udata[i] = vcap[i]*0.02
    i = i + 1
我定义函数和参数,并尝试拟合曲线:

def capvoltage(time, v1, tau):
    return v1*(1-np.e**(-time[i]/tau)) #time constant charging equation
pcap0 = [4, 5.6*10**-5] #initial guesses
popt, pcov = curve_fit(capvoltage, time, vcap, pcap0, sigma=udata, absolute_sigma=True) 
其中udata是我的实验不确定性。我收到以下错误消息:

ValueError                                Traceback (most recent call last)
<ipython-input-66-71cef837be6f> in <module>()
      1 pcap0 = [4, 5.6*10**-5]
----> 2 popt, pcov = curve_fit(capvoltage, time, vcap, pcap0, sigma=np.fabs(udata), absolute_sigma=True) #scipy optimize

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scipy/optimize/minpack.py in curve_fit(f, xdata, ydata, p0, sigma, absolute_sigma, check_finite, bounds, method, jac, **kwargs)
    721                 raise ValueError("`sigma` must be positive definite.")
    722         else:
--> 723             raise ValueError("`sigma` has incorrect shape.")
    724     else:
    725         transform = None

ValueError: `sigma` has incorrect shape.
ValueError回溯(最近一次调用)
在()
1 pcap0=[4,5.6*10**-5]
---->2 popt,pcov=曲线拟合(电容电压,时间,vcap,pcap0,sigma=np.fabs(udata),绝对值(sigma=True)#
/曲线拟合中的Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scipy/optimize/minpack.py
721提升值错误(“`sigma`必须是正定的。”)
722其他:
-->723提升值错误(“`sigma`的形状不正确。”)
724其他:
725转换=无
ValueError:`sigma`的形状不正确。

我的西格玛值有什么问题/这意味着什么?

时间
不能在
capvoltage
函数中下标。软件反对您提供的参数形状不匹配。您可以尝试在调用
curve\u fit
之前打印参数的形状(而不是
capvoltage
)。