Numpy numpy.random.choice 函数
Numpy 是 Python 中的一个强大的数学计算第三方库。它包含了数学计算中常用的常数和函数,以及矩阵运算、随机数生成、傅里叶变换等方式。在本文中,我们将介绍 numpy 中的随机数生成函数 numpy.random。
阅读更多:Numpy 教程
随机数生成
numpy.random 是生成随机数的模块,它包含了众多的函数用于生成不同类型的随机数,例如:
- 随机数种子:numpy.random.seed
- 均匀分布:numpy.random.uniform
- 正态分布:numpy.random.normal
- 指数分布:numpy.random.exponential
- 伽马分布:numpy.random.gamma
- 贝塔分布:numpy.random.beta
- 二项分布:numpy.random.binomial
- 泊松分布:numpy.random.poisson
- 等等…
在这里,我们将介绍如何使用 numpy.random.choice 函数生成一定数量的不重复、带权重的样本。
Numpy 随机抽样
numpy.random.choice 可以从一个一维数组中随机抽取若干个不重复的元素,具有随机性和带权重性,函数原型如下:
numpy.random.choice(a, size=None, replace=True, p=None)
- a: 一维数组,代表抽取样本的来源。
- size: 整数或元组,表示抽样的数量。
- replace: 布尔值,表示是否重复抽取。
- p: 一维数组,表示每个元素被抽中的概率。
如果需要从一组数字中随机抽样几个元素,可以按如下方式进行:
import numpy as np
np.random.choice([1,2,3,4,5], size=3, replace=False)
该语句将从 1-5 中抽取三个不重复的数字。
Numpy 带权重随机抽样
将 numpy.random.choice 与权重向量 p 结合起来使用,每个元素都有一定的被选中的概率。因此,在选取时,我们可以动态地指定每个元素在采样过程中被选中的概率。
import numpy as np
np.random.choice(a=['A','B','C'], size=10, replace=False, p=[0.2, 0.3, 0.5])
该语句将从 [‘A’, ‘B’, ‘C’] 中随机抽取 10 个不重复的字母,其中 A、B、C 被选中的概率分别为 0.2、0.3 和 0.5。
虽然 p 表示每个元素的权重,但是这些权重不一定要求之和为 1。如果总权重总数为 2,则可以按相对大小表示选中概率(以下示例中 a 与 b 的比值为 3:2,c 与 d 的比值为 2:3)。
import numpy as np
np.random.choice(a=['a', 'b', 'c', 'd'], size=5, replace=False, p=[3, 2, 2, 3])
总结
本文介绍了 numpy.random.choice 函数的用法,包括随机抽样和带权重随机抽样。通过这两种方法,我们可以方便地获取随机的样本集并且可以动态地指定每个元素的被选中概率。numpy 库中还提供了其他的随机数生成函数,读者可以根据需求选择相应的函数进行使用。
极客教程