我想从列表中随机选择 2 个元素。
>>> import random
>>> random.sample(["foo", "bar", "baz", "quux"], 2)
['quux', 'bar']
Run Code Online (Sandbox Code Playgroud)
但是我想用anumpy.random.Generator
来做,而不是用Python的全局随机数生成器。有没有内置或简单的方法来做到这一点?
>>> import numpy as np
>>> gen = np.random.default_rng()
>>> ???
Run Code Online (Sandbox Code Playgroud)
[编辑] 重点是利用gen
它允许您为可重复性播种。我意识到假设可以通过重新播种全局生成器来实现相同的效果,但我特别想使用gen
,一个本地生成器,而不是依赖全局生成器。
如果你真的想从numpy.random.Generator
:
import numpy as np
gen = np.random.default_rng()
gen.choice(["foo", "bar", "baz", "quux"], 2, replace=False)
Run Code Online (Sandbox Code Playgroud)
请注意,默认情况下np.random.choice
选择替换(即每个项目可以多次采样),因此如果您想要等效的方法random.sample
(信用:@ayhan),请关闭此选项。