Создание случайных выборок из данных — ключевая часть многих задач, связанных с анализом данных и статистикой. NumPy предлагает функцию np.random.choice()
, которая позволяет делать именно это. В этой статье мы рассмотрим, как использовать эту функцию, чтобы эффективно выбирать случайные элементы из массива.
numpy.random.choice(a, size=None, replace=True, p=None)
Параметры:
a
: одномерный массив или целое число. Если a является целым числом, то функция рассматривает его как массив arange(a)
.size
: размерность возвращаемого массива (по умолчанию None
, возвращает одно значение).replace
: булево значение, указывающее на то, можно ли использовать одно и то же значение несколько раз.p
: одномерный массив вероятностей соответствующий a
.import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(np.random.choice(arr)) # 4
С помощью этой команды мы получаем одно случайное значение из массива.
arr = np.array([1, 2, 3, 4, 5])
print(np.random.choice(arr, size=3)) # [2 1 5]
Здесь мы выбираем три случайных элемента из массива.
arr = np.array([1, 2, 3, 4, 5])
print(np.random.choice(arr, size=3, replace=False)) # [1 4 5]
С помощью параметра replace=False
мы гарантируем, что один и тот же элемент не будет выбран дважды.
arr = np.array([1, 2, 3, 4, 5])
print(np.random.choice(arr, size=3, p=[0.1, 0.1, 0.1, 0.1, 0.6])) # [3 5 5]
Здесь у нас есть бОльшая вероятность выбора числа 5.
arr = np.array([1, 2, 3, 4, 5])
print(np.random.choice(5, 3)) # [2 2 4]
Если передать целое число вместо массива, то np.random.choice()
будет рассматривать его как arange()
от этого числа.
Рассмотрим несколько конкретных сценариев, где функция np.random.choice()
может оказаться неоценимой в реальной практике.
Когда у вас есть большой датасет и вы хотите разделить его на обучающий и тестовый наборы, np.random.choice()
может помочь случайным образом выбирать индексы для этих наборов.
import numpy as np
data = np.arange(1000)
train_indices = np.random.choice(data, size=700, replace=False)
test_indices = np.setdiff1d(data, train_indices)
train_data = data[train_indices]
test_data = data[test_indices]
При создании игр или симуляций, где требуется случайный выбор элементов (например, выбор карты из колоды), np.random.choice()
может быть очень полезен.
deck = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
drawn_card = np.random.choice(deck)
print(f"You drew: {drawn_card}")
При проведении А/В тестов для веб-сайтов или мобильных приложений np.random.choice()
может помочь в случайном распределении пользователей на группы.
users = np.arange(1000)
group_a = np.random.choice(users, size=500, replace=False)
group_b = np.setdiff1d(users, group_a)
np.random.choice()
— это мощный инструмент в арсенале NumPy, который предоставляет гибкость и эффективность при создании случайных выборок. Независимо от того, исследуете ли вы данные, проводите статистический анализ или создаете игру, эта функция может быть чрезвычайно полезной в вашей работе.
Содержание: