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 и размер выборки больше размера популяции.
Смотрите также
Примечания
Установка пользовательских вероятностей через
pиспользует более общий, но менее эффективный сэмплер, чем стандартный. Общий сэмплер дает другую выборку, чем оптимизированный сэмплер, даже если каждый элементpравно 1 / len(a).pдолжны суммироваться до 1 при приведении кfloat64. Чтобы обеспечить это, вы можете захотеть нормализовать с помощьюp = p / np.sum(p, dtype=float).При передаче
aкак целочисленный тип иsizeне указан, возвращаемый тип является нативным Pythonint.Примеры
Сгенерировать равномерную случайную выборку из 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='