Python 如何将数组放入一个指数数组中
我试图将一些数据拟合到高斯函数。我正在尝试使用optomize.curve_fit函数来实现这一点。我无法将数据放入math.exp()中。我怎样才能避开这件事Python 如何将数组放入一个指数数组中,python,arrays,gaussian,exponential,Python,Arrays,Gaussian,Exponential,我试图将一些数据拟合到高斯函数。我正在尝试使用optomize.curve_fit函数来实现这一点。我无法将数据放入math.exp()中。我怎样才能避开这件事 def func(xdata, a,b, c): return a*math.exp(-((xdata-b)**2)/2*c**2) plt.plot(xdata, ydata, 'ro', label="original data") popt, pcov = optimize.curve_fit(func, xdata,
def func(xdata, a,b, c):
return a*math.exp(-((xdata-b)**2)/2*c**2)
plt.plot(xdata, ydata, 'ro', label="original data")
popt, pcov = optimize.curve_fit(func, xdata, ydata, maxfev=1000000)
plt.plot(xdata, func(xdata, *popt), label="Fitted Curve")
plt.legend(loc='upper left')
plt.show()
这就是为什么:
result = np.zeros(len(xdata))
def func(xdata, a,b, c):
for x in range(len(xdata)):
result[x] = a*math.exp(-((x-b)**2)/2*c**2)
return result
plt.plot(xdata, ydata, 'ro', label="original data")
popt, pcov = optimize.curve_fit(func, xdata, ydata, maxfev=1000000)
plt.plot(xdata, func(xdata, *popt), label="Fitted Curve")
plt.legend(loc='upper left')
plt.show()
干杯 试试这个:
import numpy as np
def func(xdata, a, b, c):
return a * np.exp(-((xdata-b)**2)/2*c**2)
如果您的数据不是numpy数组,请尝试
xdata=np.array(xdata)
如果数据是numpy数组,请使用。