Python代码解读:用NumPy和Matplotlib生成并可视化高斯分布
Python代码解读:用NumPy和Matplotlib生成并可视化高斯分布
本篇博客将逐行解读一段Python代码,该代码使用NumPy库生成高斯分布样本,并使用Matplotlib库将其可视化为直方图。pythonimport numpy as npimport matplotlib.pyplot as plt
设置样本数量NUM_SAMPLES = 10000
定义生成高斯分布样本的函数def generate_gaussian(): # 生成12个均匀分布的随机数并求和 uniform_sum = np.sum(np.random.rand(12)) # 将和值调整为标准正态分布 return uniform_sum - 6.0
生成高斯分布样本samples = np.array([generate_gaussian() for _ in range(NUM_SAMPLES)])
绘制直方图plt.hist(samples, bins=50, density=True)plt.title('高斯分布样本直方图')plt.xlabel('样本值')plt.ylabel('概率密度')plt.show()
代码解析:
-
导入库: -
import numpy as np: 导入NumPy库并命名为'np',用于数值计算。 -import matplotlib.pyplot as plt: 导入Matplotlib库中的pyplot模块并命名为'plt',用于绘图。 -
设置样本数量: -
NUM_SAMPLES = 10000: 定义一个常量NUM_SAMPLES,表示要生成的样本数量为10000。 -
定义生成高斯分布样本的函数: -
def generate_gaussian(): 定义一个函数generate_gaussian,用于生成符合标准正态分布的随机数。 -uniform_sum = np.sum(np.random.rand(12)): 生成12个[0, 1)之间均匀分布的随机数,并计算它们的和。 -return uniform_sum - 6.0: 将和值减去6.0,使其符合均值为0,标准差为1的标准正态分布。 -
生成高斯分布样本: -
samples = np.array([generate_gaussian() for _ in range(NUM_SAMPLES)]): 使用列表推导式生成一个包含NUM_SAMPLES个高斯分布样本的列表,并将其转换为NumPy数组。 -
绘制直方图: -
plt.hist(samples, bins=50, density=True): 绘制样本的直方图。 -samples: 指定要绘制直方图的数据。 -bins=50: 将直方图分为50个区间。 -density=True: 将频数转换为概率密度,使得直方图的面积为1。 -plt.title('高斯分布样本直方图'): 设置图表标题。 -plt.xlabel('样本值'): 设置x轴标签为'样本值'。 -plt.ylabel('概率密度'): 设置y轴标签为'概率密度'。 -plt.show(): 显示图表。
总结
这段代码演示了如何使用NumPy库生成高斯分布的随机数,并使用Matplotlib库绘制直方图来可视化数据的分布情况。 这对于理解高斯分布以及如何用Python进行数据分析和可视化非常有帮助。
原文地址: https://www.cveoy.top/t/topic/R0w 著作权归作者所有。请勿转载和采集!