欢迎访问宙启技术站
智能推送

使用Python中的数组进行正态分布拟合

发布时间:2024-01-18 11:19:03

在Python中,可以使用NumPy库中的函数来生成服从正态分布的随机数,并使用SciPy库来拟合正态分布。

首先,我们需要导入NumPy和SciPy库:

import numpy as np
from scipy.stats import norm

然后,我们可以使用np.random.normal函数生成服从正态分布的随机数。这个函数的输入参数是均值和标准差,可以通过调整这两个参数来控制生成的随机数的分布特征。

mu = 0  # 均值
sigma = 1  # 标准差
size = 1000  # 生成的随机数数量

data = np.random.normal(mu, sigma, size)

以上代码会生成一个包含1000个服从均值为0,标准差为1的正态分布的随机数的数组。

接下来,我们可以使用SciPy库中的norm.fit函数来拟合生成的随机数的正态分布。这个函数会返回两个参数,代表拟合后的正态分布的均值和标准差。

parameters = norm.fit(data)
mu_fit, sigma_fit = parameters

我们可以将生成的随机数和拟合后的正态分布进行对比。可以使用Matplotlib库来绘制直方图和拟合后的曲线。

import matplotlib.pyplot as plt

x = np.linspace(data.min(), data.max(), 100)
y = norm.pdf(x, mu_fit, sigma_fit)

plt.hist(data, bins=30, density=True, alpha=0.5)  # 绘制直方图
plt.plot(x, y, 'r-')  # 绘制拟合后的正态分布曲线

plt.xlabel('Value')
plt.ylabel('Frequency')

plt.show()

运行以上代码,将会显示生成的随机数的直方图和拟合后的正态分布曲线。

这是一个简单的例子,展示了如何使用Python中的数组进行正态分布拟合。通过调整均值和标准差的值,以及生成的随机数的数量,可以得到不同的正态分布。此外,还可使用其他参数和函数来调整拟合效果和绘制方式,从而满足不同的需求。