numpy.random.choice(a, size=None, replace=True, p=None)
#从a(只要是ndarray都可以,但必须是一维的)中随机抽取数字,并组成指定大小(size)的数组
#replace:True表示可以取相同数字,False表示不可以取相同数字
#数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。
方法一
import numpy as np
b = list(range(1,30))+list(range(70,95))
np.random.choice(b,10)
方法二
a = list(range(1,100))
b = list(range(1,30))+list(range(70,95))
p = np.ones(len(a))
mask = np.zeros(len(a))
mask[np.array(b)]=1
p *=mask
p /=np.sum(p)
np.random.choice(a,10, p=p)
在github别人代码中选取了相对麻烦的方法二的原因,可能是要满足被抽取的元素必须是在列表a 和 b的交集中。
本文介绍了如何使用numpy的np.random.choice()函数在两个不连续的列表的交集中随机抽取元素,分别阐述了两种不同的实现方法,并讨论了在特定场景下选择复杂方法的理由。
948

被折叠的 条评论
为什么被折叠?



