1 2 3 4 | numpy.random.choice(a, size=None, replace=True, p=None) #从a(只要是ndarray都可以,但必须是一维的)中随机抽取数字,并组成指定大小(size)的数组 #replace:True表示可以取相同数字,False表示不可以取相同数字 #数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。 |
方法一
1 2 3 | import numpy as np b = list(range(1,30))+list(range(70,95)) np.random.choice(b,10) |
方法二
1 2 3 4 5 6 7 8 | 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的交集中。