random.sample 的 numpy 等价物是什么?

Dan*_*ton 5 python numpy

我想从列表中随机选择 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,一个本地生成器,而不是依赖全局生成器。

Nat*_*han 6

如果你真的想从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),请关闭此选项。

  • 您还需要 `replace=False` 才能使其与 random.sample 等效。 (2认同)