Метод choice
Метод choice класса RandomState генерирует случайную выборку из заданного одномерного массива или диапазона чисел. Первым параметром метод принимает исходный массив или целое число (в этом случае генерируется выборка из диапазона от 0 до указанного числа). Вторым параметром можно задать размерность выходного массива. Метод позволяет управлять вероятностями выбора каждого элемента и выполнять выборку как с возвращением, так и без.
Синтаксис
np.random.RandomState.choice(a, size=None, replace=True, p=None)
Основные параметры метода:
- ⁅b⁆a⁅/b⁆ - одномерный массив или целое число, из которого производится выборка;
- ⁅b⁆size⁅/b⁆ - размерность выходного массива (целое число или кортеж);
- ⁅b⁆replace⁅/b⁆ - флаг, определяющий выборку с возвращением (True) или без (False);
- ⁅b⁆p⁅/b⁆ - массив вероятностей для каждого элемента из a.
Пример
Создадим генератор случайных чисел с фиксированным зерном и выполним простую выборку одного элемента из массива:
import numpy as np
rng = np.random.RandomState(0)
arr = np.array([1, 2, 3, 4, 5])
res = rng.choice(arr)
print(res)
Результат выполнения кода:
2
Пример
Сгенерируем выборку из 5 элементов с заменой из диапазона чисел от 0 до 9:
import numpy as np
rng = np.random.RandomState(0)
res = rng.choice(10, size=5)
print(res)
Результат выполнения кода:
[5 6 9 2 4]
Пример
Выполним выборку без возвращения (каждый элемент может быть выбран только один раз):
import numpy as np
rng = np.random.RandomState(0)
arr = np.array([10, 20, 30, 40, 50])
res = rng.choice(arr, size=3, replace=False)
print(res)
Результат выполнения кода:
[50 40 10]
Пример
Создадим выборку с заданными вероятностями для каждого элемента:
import numpy as np
rng = np.random.RandomState(0)
arr = np.array([1, 2, 3])
probabilities = np.array([0.1, 0.8, 0.1])
res = rng.choice(arr, size=10, p=probabilities)
print(res)
Результат выполнения кода:
[2 2 2 2 2 2 1 2 2 2]
Пример
Сгенерируем двумерный массив случайных выборок:
import numpy as np
rng = np.random.RandomState(0)
arr = np.array(['a', 'b', 'c', 'd'])
res = rng.choice(arr, size=(2, 3))
print(res)
Результат выполнения кода:
[['c' 'd' 'd']
['b' 'd' 'b']]
Смотрите также
-
метод
rand,
который генерирует случайные числа из равномерного распределения -
метод
randint,
который генерирует случайные целые числа в заданном диапазоне -
метод
shuffle,
который перемешивает элементы массива случайным образом -
метод
permutation,
который возвращает случайную перестановку элементов массива