Что такое numpy эквивалент random.sample? - PullRequest
1 голос
/ 31 января 2020

Я хочу случайным образом выбрать 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, локальный генератор, а не полагаться на глобальные генераторы.

1 Ответ

4 голосов
/ 31 января 2020

Если вы действительно хотите сделать это из 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...