python - scipy curve_fit多系列数据

标签 python numpy scipy curve-fitting


我试图建立一个曲线拟合,考虑基于相同 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正确地处理数据而不是创建多维数组。 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 的引用元素都是一维的。

关于python - scipy curve_fit多系列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43879801/

相关文章:

python - 在 Python 中禁用 subprocess.Popen 的控制台输出

python - 加载 PNG 时像素值错误

python - scipy.curve_fit() 返回多行

python - 不使用 scikit learn 训练测试分割

python - 如何在Python中聚合记录?

python - 如何使用 ipywidgets 创建一个切换按钮来显示和清除输出?

python - 忽略 nan 值并执行 numpy.polyval 的函数

python - 使用 numpy 进行高效迭代

python - 用黑线绘制 3D 图形,其中 Z = 0?

Python fmin 太慢