【发布时间】:2020-04-30 03:12:44
【问题描述】:
import numpy as np
from astropy import modeling
import matplotlib.pyplot as plt
from scipy import optimize
def gaussian(x, amplitude, mean, stddev):
return amplitude * np.exp(-((x - mean)/4/stddev)**2)
# the data
m = modeling.models.Gaussian1D(amplitude=10, mean=100, stddev=10)
x = np.linspace(0, 400, 400)
data = m(x)
# fitting
popt, _ = optimize.curve_fit(gaussian, x, data)
plt.figure(0)
plt.plot(x, data)
plt.plot(x, gaussian(x, *popt))
plt.show()
我运行它来进行正态分布拟合。但它给了我一条线。想不通为什么。
但是,如果我将平均值降低到 45 以下,它将给出一个很好的拟合。这是 scipy 包的设计缺陷吗?
【问题讨论】:
标签: python-3.x scipy normal-distribution scipy-optimize