numpy.random.Generator.choice#

метод

random.Generator.выбор(a, размер=None, replace=True, p=None, ось=0, перемешивание=True)#

Генерирует случайную выборку из заданного массива

Параметры:
a{array_like, int}

Если ndarray, случайная выборка генерируется из его элементов. Если int, случайная выборка генерируется из np.arange(a).

размер{int, tuple[int]}, опционально

Форма вывода. Если заданная форма, например, (m, n, k), затем m * n * k выборки берутся из одномерного a. Если a имеет более одного измерения, то size форма будет вставлена в ось измерение, поэтому выходной ndim будет a.ndim - 1 + len(size). По умолчанию None, в этом случае возвращается одно значение.

replacebool, необязательно

Выборка с возвращением или без. По умолчанию True, что означает, что значение a может быть выбран несколько раз.

p1-D array_like, необязательный

Вероятности, связанные с каждой записью в a. Если не указаны, выборка предполагает равномерное распределение по всем записям в a.

осьint, необязательный

Ось, вдоль которой выполняется выбор. По умолчанию 0 выбирает по строкам.

перемешиваниеbool, необязательно

Перемешивается ли выборка при выборке без замены. По умолчанию True, False обеспечивает ускорение.

Возвращает:
образцыодиночный элемент или ndarray

Сгенерированные случайные выборки

Вызывает:
ValueError

Если a — целое число и меньше нуля, если p не является одномерным, если a — массивоподобный объект с размером 0, если p не является вектором вероятностей, если a и p имеют разную длину, или если replace=False и размер выборки больше размера популяции.

Смотрите также

integers, shuffle, permutation

Примечания

Установка пользовательских вероятностей через p использует более общий, но менее эффективный сэмплер, чем стандартный. Общий сэмплер дает другую выборку, чем оптимизированный сэмплер, даже если каждый элемент p равно 1 / len(a).

p должны суммироваться до 1 при приведении к float64. Чтобы обеспечить это, вы можете захотеть нормализовать с помощью p = p / np.sum(p, dtype=float).

При передаче a как целочисленный тип и size не указан, возвращаемый тип является нативным Python int.

Примеры

Сгенерировать равномерную случайную выборку из np.arange(5) размером 3:

>>> rng = np.random.default_rng()
>>> rng.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to rng.integers(0,5,3)

Сгенерировать неравномерную случайную выборку из np.arange(5) размером 3:

>>> rng.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0]) # random

Сгенерировать равномерную случайную выборку из np.arange(5) размера 3 без замены:

>>> rng.choice(5, 3, replace=False)
array([3,1,0]) # random
>>> #This is equivalent to rng.permutation(np.arange(5))[:3]

Сгенерировать равномерную случайную выборку из 2-D массива вдоль первой оси (по умолчанию), без возвращения:

>>> rng.choice([[0, 1, 2], [3, 4, 5], [6, 7, 8]], 2, replace=False)
array([[3, 4, 5], # random
       [0, 1, 2]])

Сгенерируйте неравномерную случайную выборку из np.arange(5) размера 3 без замены:

>>> rng.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0]) # random

Любое из вышеперечисленного может быть повторено с произвольным массивоподобным объектом вместо целых чисел. Например:

>>> aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
>>> rng.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'], # random
      dtype='