Python 如何将数组放入一个指数数组中

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,

我试图将一些数据拟合到高斯函数。我正在尝试使用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, 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数组,请使用。