NumPy взламывает анализ данных: как генератор случайных чисел меняет правила игры — не пропусти пошаговое руководство!

Калькулятор с числами и логотипы Python вокруг.

Кратко

Если тебе нужно смоделировать случайные события или распределения вероятностей, NumPy сделает это всего за пару строк — быстро и удобно прямо в Python.

Создаём генератор случайных чисел

Создание генератора случайных чисел в Python с NumPy.

Чтобы начать генерировать случайные числа с помощью NumPy, просто создай объект генератора вот так:

Не забудь поставить скобки в конце — иначе не получишь рабочий генератор случайных чисел. Если хочешь, чтобы результаты повторялись при каждом запуске, укажи определённое значение seed (например, 42). Если не задавать seed, генератор возьмёт случайность из данных твоей операционной системы.

Чтобы каждый раз получать один и тот же результат, начни с генератора на базе заданного seed, например, 42:

Генерируем случайные числа

Теперь можно получить случайное значение с помощью метода random:

Если нужно сразу несколько чисел — просто укажи, сколько их требуется. Например, так можно получить массив из 10 случайных чисел:

NumPy отлично работает и с многомерными массивами. Например, чтобы создать таблицу случайных чисел с тремя строками и пятью столбцами, просто укажи нужные размеры:

Случайная матрица, созданная NumPy.

Случайные числа по биномиальному закону

NumPy часто выбирают для анализа данных, потому что он позволяет легко моделировать случайные события и вероятности.

Можно генерировать числа, соответствующие любому вероятностному закону — например, биномиальному. Это самый популярный способ считать количество успехов в серии попыток.

Для этого достаточно воспользоваться методом binomial.

Например, чтобы виртуально подбросить монетку 10 раз. У честной монеты два исхода — орёл или решка, вероятность каждого — 50%.

Симуляция 10 подбрасываний монеты с помощью биномиального генератора NumPy.

Генератор выдаст количество успехов при 10 бросках. Обычно это будет что-то вроде пяти, но если выпадет шесть или семь, не удивляйся — все броски независимы друг от друга. Чтобы приблизиться к теоретическим значениям, увеличь число попыток до 50:

Ты увидишь результат ближе к 25 — ровно половине из 50, что и ожидается. Если сделать 100 подбрасываний:

Чем больше бросков, тем заметнее результат стремится к теории — 50%. Именно так проявляются вероятностные законы на больших выборках.

Можно генерировать массивы, в которых будет сразу много серий испытаний. Например, 10 серий по 10 бросков:

Построить график удобно с помощью Seaborn:

Сначала распределение может быть не очень похоже на нормальное, но чем больше серий, тем ближе оно становится к классической «колоколке».

Попробуй 100 попыток:

А с 1000 попытками результат уже почти сливается с нормальным распределением.

График биномиального распределения случайных чисел Python, приближение к нормальному закону.

Вот она — Центральная предельная теорема в действии. Если посчитать среднее по такому массиву, оно будет стремиться к 5 — совпадает с теоретическими 50% для монетки по мере увеличения числа попыток.

Случайные числа с нормальным распределением

Вместо того чтобы ждать, когда биномиальное распределение станет похожим на нормальное, ты можешь сразу получить числа из нормального (Гауссового) распределения с помощью метода standard_normal.

Достаточно вызвать команду — и на руках уже есть случайное число из нормального распределения:

Если нужно, например, 10 чисел, массив создаётся так же легко:

Чтобы убедиться, что всё действительно соответствует нормальному закону, сгенерируй большой массив и построи гистограмму. Начни хотя бы со 100 чисел:

Гистограмма массива из 100 случайных чисел нормального распределения в NumPy.

Чем больше значений — тем явнее появляется характерная форма колокола. Попробуй сгенерировать 1000 чисел:

Гистограмма массива случайных чисел из нормального распределения в NumPy.

Задай свои параметры — так легко получишь массив со средним и стандартным отклонением, которые нужны именно тебе: просто добавь к каждому элементу нужное число и умножь на коэффициент. Например, 100 значений с математическим ожиданием 4 и стандартным отклонением 2:

Проверь среднее и стандартное отклонение с помощью специальных методов.

Массив случайных нормальных чисел из NumPy с расчетом среднего и стандартного отклонения в IPython.

Числа будут очень близки к тем параметрам, которые ты задал.

Перемешиваем элементы массива

Перемешивание массива на месте с помощью NumPy.

Теперь можешь смело использовать NumPy, чтобы быстро и случайным образом перемешать любой массив прямо в памяти! Например, удобно перемешивать список с названиями фруктов:

Посмотри на массив — теперь порядок элементов изменён совершенно случайно.

Этот способ отлично подойдёт для простых игровых задач или, скажем, для перемешивания «колоды» карт, если представить её в виде массива.

С NumPy добавить немного хаоса в твой Python-проект проще простого. Достаточно создать генератор — и ты готов к любым эксперементам со случайными числами!

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!

Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в:

Алекс Бежбакин
Оцените автора
Добавить комментарий