🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。
📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服务,有需要可加文末联系方式联系。
💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
关于numpy.random模块,看这一篇文章就够了
- 1. NumPy库介绍
- 2. random 模块介绍
- 常用的 `numpy.random` 函数概述:
- 2.1 函数定义及参数说明
- random.rand
- random.randn
- random.randint
- random.choice
- random.permutation
- 3. 示例代码
- 3.1 生成均匀分布的随机数
- 3.2 生成标准正态分布的随机数
- 3.3 生成随机整数
- 3.4 从给定数组中随机抽样
- 3.5 生成随机排序的序列
- 4. 实际应用:蒙特卡洛模拟
- 4.1 蒙特卡洛模拟估算圆周率
- 5. 总结
1. NumPy库介绍
NumPy(Numerical Python)是Python编程语言的一个基础库,广泛用于科学计算、数据分析和机器学习。它提供了高效的多维数组(ndarray)以及针对这些数组的各种操作函数。NumPy因其高性能、简洁的API以及强大的数值计算能力而著称,是数据科学家、工程师和研究人员的常用工具。
NumPy不仅支持基本的数组操作,还包括线性代数、随机数生成、傅里叶变换等高级功能模块。这使得NumPy在处理大量数据时显得尤为重要。
2. random 模块介绍
numpy.random
模块提供了一系列随机数生成函数,涵盖各种分布类型。这些函数在模拟、数值仿真和统计学中非常有用。通过numpy.random
,用户可以高效地生成伪随机数,并可以控制生成的伪随机数的分布类型和参数。
常用的 numpy.random
函数概述:
random.rand
:生成均匀分布的随机数。random.randn
:生成标准正态分布的随机数。random.randint
:生成随机整数。random.choice
:从给定数组中生成随机样本。random.permutation
:返回一个随机排序的序列。
2.1 函数定义及参数说明
random.rand
创建指定形状的数组,数组中的值服从[0, 1)区间的均匀分布。
numpy.random.rand(d0, d1, ..., dn)
参数:
d0, d1, ..., dn
:输出数组的形状。
返回:
- 满足要求形状的随机值数组。
random.randn
创建指定形状的数组,数组中的值服从标准正态分布(均值为0,标准差为1)。
numpy.random.randn(d0, d1, ..., dn)
参数:
d0, d1, ..., dn
:输出数组的形状。
返回:
- 满足要求形状的标准正态分布随机值数组。
random.randint
生成随机整数,范围从低(包含)到高(不包含)。
numpy.random.randint(low, high=None, size=None, dtype=int)
参数:
low
:随机整数的最低范围(包含)。high
:随机整数的最高范围(不包含),如果未指定,则生成范围为[0, low)。size
:输出形状。dtype
:输出数组的数据类型。
返回:
- 随机整数数组。
random.choice
从给定的一维数组中随机抽取样本。
numpy.random.choice(a, size=None, replace=True, p=None)
参数:
a
:一维数组,或整数(表示从np.arange(a)中抽取)。size
:输出样本数。replace
:布尔值,是否允许重复抽样。p
:与a相同长度的数组,每个元素被选中的概率。
返回:
- 随机样本数组。
random.permutation
返回一个随机排序的序列。
numpy.random.permutation(x)
参数:
x
:整数或数组。
返回:
- 随机排序的数组。
3. 示例代码
通过以下示例代码,我们将展示numpy.random
模块的具体用法。
3.1 生成均匀分布的随机数
这个示例展示了如何生成服从[0, 1)区间上的均匀分布随机数。
import numpy as np
# 生成一个二维数组,形状为(3, 2),元素为均匀分布随机数
random_array = np.random.rand(3, 2)
print("Random array with uniform distribution:\n", random_array)
输出示例:
Random array with uniform distribution:
[[0.5488135 0.71518937]
[0.60276338 0.54488318]
[0.4236548 0.64589411]]
3.2 生成标准正态分布的随机数
这个示例展示了如何生成服从标准正态分布(均值为0,标准差为1)的随机数。
import numpy as np
# 生成一个一维数组,包含5个标准正态分布随机数
normal_array = np.random.randn(5)
print("Random array with standard normal distribution:\n", normal_array)
输出示例:
Random array with standard normal distribution:
[ 1.76405235 0.40015721 0.97873798 2.2408932 1.86755799]
3.3 生成随机整数
这次我们示范如何生成指定范围内的随机整数。
import numpy as np
# 生成一个形状为(3, 3)的数组,元素为[0, 10)区间的随机整数
random_integers = np.random.randint(0, 10, (3, 3))
print("Random integer array:\n", random_integers)
输出示例:
Random integer array:
[[3 7 9]
[3 7 2]
[5 4 7]]
3.4 从给定数组中随机抽样
我们可以从一个给定的数组(或整数范围)中抽取随机样本。
import numpy as np
# 从数组a中随机抽取3个元素
a = np.array([10, 20, 30, 40, 50])
choice_array = np.random.choice(a, 3)
print("Random choice from the array:\n", choice_array)
输出示例:
Random choice from the array:
[30 10 20]
3.5 生成随机排序的序列
这个示例展示了如何对一个数组或整数范围进行随机排序。
import numpy as np
# 随机打乱一个数组
arr = np.array([1, 2, 3, 4, 5])
permuted_array = np.random.permutation(arr)
print("Randomly permuted array:\n", permuted_array)
输出示例:
Randomly permuted array:
[3 5 1 2 4]
4. 实际应用:蒙特卡洛模拟
蒙特卡洛模拟是利用随机数生成来进行数值模拟的一种方法。在金融、物理、工程等领域有广泛应用。这里我们展示一个简单的蒙特卡洛法估算圆周率。
4.1 蒙特卡洛模拟估算圆周率
通过在单位正方形内生成随机点,计算落在单位圆内点的比例,可以估算圆周率。
import numpy as np
# 生成随机点数量
num_points = 10000
# 生成均匀分布的随机点
points = np.random.rand(num_points, 2)
# 计算落在单位圆内的点
inside_circle = np.sum(np.square(points).sum(axis=1) <= 1.0)
# 估算圆周率
pi_estimate = (inside_circle / num_points) * 4
print("Estimated value of Pi:", pi_estimate)
输出示例:
Estimated value of Pi: 3.148
通过增加 num_points
的数量,可以提升估算的准确度。
5. 总结
NumPy 是进行科学计算的强大工具,其 numpy.random
模块提供了丰富的随机数生成函数。这些函数不仅能够生成不同分布的随机数,还能在模拟、数值仿真和统计学等领域中发挥重要作用。
在这篇文章中,我们详细介绍了 numpy.random
中的几个常用函数,包括生成均匀分布的随机数、标准正态分布的随机数、随机整数、从给定数组中抽样以及生成随机排序的序列。通过这些函数,我们可以轻松实现各种随机数生成任务。
此外,我们还展示了蒙特卡洛模拟在估算圆周率中的具体应用,展示了 numpy.random
的实际应用场景。
掌握 numpy.random
模块,将大大提高我们在随机数生成和数值模拟方面的工作效率和准确性。如果你对 NumPy 及其功能有更多兴趣,建议进一步学习和探索。