18 NumPy高级功能之随机数生成

在数据科学和机器学习的领域中,随机数生成是一个重要的工具。随机数不仅可以用于抽样、模拟,还可以用于初始化模型参数。NumPy提供了强大的随机数生成库,可以轻松地生成各种分布的随机数。接下来,我们将通过一些示例来探索NumPy中的随机数生成。

NumPy的随机数生成模块

NumPy的随机数生成功能主要集中在numpy.random模块中。该模块提供了多种方法来生成随机数和随机样本。

随机数生成基础

我们首先可以使用numpy.random.rand()生成均匀分布的随机数。它返回在$[0, 1)$区间内均匀分布的随机数。

1
2
3
4
5
import numpy as np

# 生成5个均匀分布的随机数
random_numbers = np.random.rand(5)
print(random_numbers)

正态分布随机数

除了均匀分布,NumPy还支持其他类型的分布,例如正态分布(高斯分布)。使用函数numpy.random.randn()可以生成标准正态分布(均值为0,方差为1)的随机数。

1
2
3
# 生成5个标准正态分布的随机数
normal_random_numbers = np.random.randn(5)
print(normal_random_numbers)

指定均值和标准差的正态分布

如果需要生成具有指定均值$\mu$和标准差$\sigma$的随机数,我们可以使用numpy.random.normal(loc, scale, size)函数。

1
2
3
4
# 生成5个均值为10,标准差为2的随机数
mu, sigma = 10, 2
custom_normal_random_numbers = np.random.normal(mu, sigma, 5)
print(custom_normal_random_numbers)

随机整数生成

如果我们需要生成某个范围内的随机整数,可以使用numpy.random.randint(low, high, size)函数。

1
2
3
# 生成5个范围在1到10之间的随机整数
random_integers = np.random.randint(1, 10, 5)
print(random_integers)

随机样本抽取

numpy.random.choice(a, size, replace)函数可以用来从给定的一维数组中随机抽取样本。replace参数决定是否允许重复抽样。

1
2
3
4
5
6
7
8
array = np.array([1, 2, 3, 4, 5])
# 从array中随机抽取3个样本,允许重复
samples_with_replacement = np.random.choice(array, size=3, replace=True)
print(samples_with_replacement)

# 从array中随机抽取3个样本,不允许重复
samples_without_replacement = np.random.choice(array, size=3, replace=False)
print(samples_without_replacement)

随机种子

NumPy允许设置随机种子,这样可以确保每次运行程序时生成的随机数序列一致。使用numpy.random.seed(seed)函数可以设置种子。

1
2
np.random.seed(42)
print(np.random.rand(5)) # 每次运行得到的结果都是一样的

应用案例:生成随机数据并可视化

以下是一个简单的案例,我们将生成一组正态分布的数据,并绘制直方图来可视化这些数据的分布情况。

1
2
3
4
5
6
7
8
9
10
11
12
import matplotlib.pyplot as plt

# 生成1000个均值为50,标准差为10的随机数
data = np.random.normal(50, 10, 1000)

# 绘制直方图
plt.hist(data, bins=30, alpha=0.7, color='blue', edgecolor='black')
plt.title('Histogram of Generated Data')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.grid(axis='y', alpha=0.75)
plt.show()

总结

在本章中,我们探讨了NumPy中的随机数生成技术,从基本的均匀分布到正态分布以及随机样本抽取,涵盖了多种生成随机数的方法。随机数生成在数据分析、模拟和机器学习中的应用是非常广泛的。掌握这些技能将为后续的学习打下坚实的基础。

下一章我们将讨论NumPy在数据分析中的应用,具体内容包括数据的读取和处理,敬请期待!

18 NumPy高级功能之随机数生成

https://zglg.work/numpy-zero/18/

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论