np.random.choice() в NumPy

Случайные элементы из заданного массива: np.random.choice() в NumPy

Создание случайных выборок из данных — ключевая часть многих задач, связанных с анализом данных и статистикой. 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, который предоставляет гибкость и эффективность при создании случайных выборок. Независимо от того, исследуете ли вы данные, проводите статистический анализ или создаете игру, эта функция может быть чрезвычайно полезной в вашей работе.

Содержание: