Scipy curve_fit 多系列数据

Scipy curve_fit multiple series of data


我正在尝试根据相同的 x 值和相同的(指数)定律考虑多个 y 系列的曲线拟合。系列中的 y 值略有不同,因为它们是实验性的,但仍然很接近(在相同的 x 处)。

我尝试构建两个数组:一个包含 x,一个包含两个不同系列的 y

def f(x,a,b,c):
    return a*numpy.exp(-b*x)+c
xdata=numpy.array([data['x'],data['x']])
ydata = numpy.array([data['y1'], data['y2']])
popt, pcov=curve_fit(f,xdata,ydata)

但是出现这个错误:

TypeError: Improper input: N=3 must not exceed M=2

有谁知道如何解决这个错误或进行这种曲线拟合的正确方法?

您应该 concatenate the data properly instead of creating a multi-dimensional array. There is nothing in curve_fit 声明数据必须按 x:

排序
xdata = np.concatenate((data['x'], data['x']))
ydata = np.concatenate((data['y1'], data['y2']))
popt, pcov = curve_fit(f, xdata, ydata)

这假设 data 的引用元素都是一维的。