如何创建除一组给定值以外的随机序列

2024-05-19 16:10:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用numpy,我想生成一个大小为n的数组,其中包含从ab[上限独占]的随机整数,这些整数不在数组arr中(如果有帮助,arr中的所有值都是唯一的)。我希望概率在其他可能的值中均匀分布。我知道我可以这样做:

randlist = np.random.randint(a, b, n)
while np.intersect1d(randlist, arr).size > 0:
    randlist = np.random.randint(a, b, n)

但这似乎真的没有效率。最快的方法是什么?你知道吗


Tags: 方法numpysizenp整数random数组概率
1条回答
网友
1楼 · 发布于 2024-05-19 16:10:33

最简单的矢量化方法是np.setdiff1d+np.random.choice-

c = np.setdiff1d(np.arange(a,b),arr)
out = np.random.choice(c,n)

另一种方法是masking

mask = np.ones(b-a,dtype=bool)
mask[arr-a] = 0
idx = np.flatnonzero(mask)+a
out = idx[np.random.randint(0,len(idx),n)]

相关问题 更多 >