numpy中与random.sample等价的函数是什么?

6
我想从列表中随机选择2个元素。
>>> import random
>>> random.sample(["foo", "bar", "baz", "quux"], 2)
['quux', 'bar']

但我希望使用numpy.random.Generator来实现,而不是使用Python的全局随机数生成器。是否有内置或容易的方法可以实现这一点?

>>> import numpy as np
>>> gen = np.random.default_rng()
>>> ???

[编辑] 关键是要利用gen,它允许您进行种子化以实现可重复性。我意识到可以通过重新设置全局生成器来理论上实现相同的效果,但我特别想使用本地生成器gen,而不是依赖于全局生成器。

2
为什么不使用 myrandom = random.Random(seed) 然后 myrandom.sample(...)?这样做不也能达到你的目标吗? - Kelly Bundy
1个回答

7

如果您真的想要从 numpy.random.Generator 进行操作:

import numpy as np
gen = np.random.default_rng()
gen.choice(["foo", "bar", "baz", "quux"], 2, replace=False)

注意,np.random.choice默认是进行有放回的抽样(即每个项目可能被抽取多次),如果你想得到等效于random.sample的方法,请将其关闭(感谢@ayhan)。

2
你还需要添加 replace=False 才能实现 random.sample 的效果。 - ayhan
1
啊,我不经常使用“random”;我会编辑那个注释。 - Nathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接