下面是如何使用Numpy和Matplotlib绘制正态分布图的完整攻略。
什么是正态分布?
正态分布是一种常见的连续概率分布,具有钟形曲线的形状。对于大量数据的不确定性分析和建模,正态分布是一种常用的方法。
正态分布通常由两个参数描述:均值 μ
和标准差 σ
。均值影响分布的位置和形状,标准差影响峰值的高度和形状。
使用Numpy生成正态分布随机数
首先使用Numpy中的random
模块生成一组服从正态分布的随机数。我们可以使用numpy.random.normal(loc=0.0, scale=1.0, size=None)
函数来生成正态分布的随机数。其中loc
表示生成随机数的均值,scale
表示生成随机数的标准差,size
表示生成随机数的个数。
下面是一个简单的示例,我们生成了100个均值为0,标准差为1的随机数:
import numpy as np
# 生成均值为0,标准差为1的正态分布随机数
data = np.random.normal(loc=0.0, scale=1.0, size=100)
使用Matplotlib绘制正态分布概率密度函数图
Matplotlib是一种常用的Python绘图库,可以用于快速生成各种类型的图表。我们可以使用Matplotlib绘制正态分布的概率密度函数图。
要绘制正态分布的概率密度函数图,我们需要计算出在一组给定的均值和标准差下,在每个横坐标上的概率密度。我们可以使用Numpy中的numpy.exp()
、numpy.sqrt()
和numpy.power()
函数来计算概率密度函数,然后使用Matplotlib中的pylab.plot()
函数绘制函数图。
下面是一个示例代码,我们将生成的随机数带入numpy.exp()
、numpy.sqrt()
和numpy.power()
函数中计算概率密度并绘制概率密度函数图:
import numpy as np
import matplotlib.pyplot as plt
# 生成均值为0,标准差为1的正态分布随机数
data = np.random.normal(loc=0.0, scale=1.0, size=100)
# 计算正态分布的概率密度
density = 1 / (np.sqrt(2 * np.pi) * 1) * np.exp(- (data - 0) ** 2 / (2 * 1 ** 2))
# 绘制概率密度函数图
plt.plot(data, density)
plt.show()
这段代码将生成100个均值为0,标准差为1的随机数,并计算每个随机数的概率密度。然后使用Matplotlib绘制正态分布的概率密度函数图。最后,我们使用pylab.show()
函数显示绘制出来的图表。
使用Matplotlib绘制多个正态分布概率密度函数图
我们可以通过绘制多个正态分布概率密度函数图来比较不同均值和标准差下的概率密度函数。我们可以使用Numpy生成多组随机数,并使用Matplotlib绘制每组随机数的概率密度函数图。
下面是一个示例代码,我们生成了3组随机数,并绘制了每组随机数的概率密度函数图:
import numpy as np
import matplotlib.pyplot as plt
# 生成3组均值和标准差不同的正态分布随机数
data1 = np.random.normal(loc=0.0, scale=1.0, size=100)
data2 = np.random.normal(loc=1.0, scale=1.5, size=100)
data3 = np.random.normal(loc=-1.0, scale=0.5, size=100)
# 计算每组随机数的概率密度
density1 = 1 / (np.sqrt(2 * np.pi) * 1) * np.exp(- (data1 - 0) ** 2 / (2 * 1 ** 2))
density2 = 1 / (np.sqrt(2 * np.pi) * 1.5) * np.exp(- (data2 - 1) ** 2 / (2 * 1.5 ** 2))
density3 = 1 / (np.sqrt(2 * np.pi) * 0.5) * np.exp(- (data3 + 1) ** 2 / (2 * 0.5 ** 2))
# 绘制每组随机数的概率密度函数图
plt.plot(data1, density1, label="mu=0, sigma=1")
plt.plot(data2, density2, label="mu=1, sigma=1.5")
plt.plot(data3, density3, label="mu=-1, sigma=0.5")
plt.legend()
plt.show()
这段代码将生成3组均值及标准差不同的随机数,并计算每组随机数的概率密度。然后使用Matplotlib绘制每组随机数的概率密度函数图。最后,我们使用pylab.legend()
函数添加图例,使用pylab.show()
函数显示绘制出来的图表。