numpy之随机抽样函数np.random.choice()
函数简介
np.random.choice() 是NumPy中的一个随机抽样函数,它可以从给定的一维数组中按照指定概率随机抽取指定数量的元素。
函数详解
np.random.choice(a, size=None, replace=True, p=None)
- a: 一维数组(如 np.array([0,1,2]) 或 [0,1,2] )或整数(如 3),表示需要进行抽取的数据源。注意,当a为整数时,等价于 np.arrage(n),即 [0, n) 。
- size: 整数或元组,表示输出数组的大小,即随机抽取的元素个数。
- replace: 布尔值,表示是否允许重复抽样,即是否有放回的抽样,默认是True。
- p: 一维数组,表示每个元素被抽到的概率,如果未指定,则默认为均匀分布。
实例
import numpy as npa = [0,1,2]# 随机抽取一个元素,0或1或2
print(np.random.choice(a))
# 输出:0或1或2# 有放回地随机抽取4个元素
print(np.random.choice(a, size=4))
# 输出:[2 0 2 0] ...# 无放回地随机抽取2个元素
print(np.random.choice(a, size=2, replace=False))
# 输出:[2 1]# 按照给定概率有放回地随机抽取5个元素
print(np.random.choice(a, size=5, p=[0.1,0.1,0.8]))
# 输出:[2 2 2 2 2]
实际应用中,比如会在深度学习训练时,随机mask掉每个batch中的某一部分数据,就用np.random.choice()生成随机的mask:
res_mask = np.random.choice([0, 1],size=batch_size,p=[prob_random_mask_residual,1 - self.prob_random_mask_residual])
参考:【随手记】np.random.choice()函数-CSDN博客