【发布时间】:2019-04-28 17:38:48
【问题描述】:
尝试拟合订单时出现索引错误>1 多项式数据:
import numpy as np
from scipy.optimize import curve_fit
x = b #1D array for X Axis
y = c #1D array for Y Axis
def func(x, a, b,c):
return ((a*(x**2)) + b*x + c)
iniguess = [0,0.038,13.99]
param, pcov = curve_fit(func, x, y, p0=iniguess)
print (param[0],param[1],param[2])
import matplotlib.pyplot as plt
plt.plot(x,y,'bo ')
xfit = b
yfit = func(xfit, param[0], param[1], param[3])
plt.plot(xfit,yfit,'r-')
plt.legend(['data','fit'],loc='best')
当我尝试计算预测的 Y 值时,这会给我一个错误代码。错误是“index 3 is out of bounds for axis 0 with size 3”
【问题讨论】:
-
不应该是
param[2]而不是param[3]函数中的最后一个参数func在以yfit = func...开头的行吗? -
是的..排序:阅读错误消息。总之,是
x = b还是b的拟合参数。当然,python 可以这样工作,但从代码可读性的角度来看,变量命名也可以改进。 -
是的。它应该是 Param[2]。错过了。
标签: python-3.x numpy scipy curve-fitting