Изучаем функцию np.histogram в NumPy: создаем гистограмму
В этом учебнике вы научитесь использовать функцию гистограммы NumPy для вычисления гистограммы заданного набора данных. Гистограмма показывает частоту числовых данных в пределах группированных диапазонов. Используя NumPy для расчета гистограмм, вы можете легко вычислить и получить доступ к частотам (относительным или абсолютным) различных значений.
К концу этого учебного пособия вы узнаете:
Как работает функция гистограммы NumPy
Как настроить количество и диапазон интервалов в результирующей гистограмме
Как вернуть либо абсолютные значения, либо функцию плотности вероятности интервала
Если вы хотите научиться проверять, является ли распределение нормальным, ознакомьтесь с моим руководством по использованию Python для тестирования на нормальность
Содержание
Понимание функции гистограммы NumPy
В этом разделе вы узнаете о функции np.histogram()
и различных параметрах и аргументах по умолчанию, которые предлагает эта функция. Функция имеет шесть различных параметров, один из которых является обязательным. Давайте посмотрим, как выглядит функция:
Функция np.histogram()
вычисляет гистограмму данных, разбивая их на равные интервалы. Возвращает два массива: массив гистограммы (число элементов в каждом интервале) и массив с границами интервалов.
Мы видим, что функция предоставляет ряд различных параметров. В таблице ниже представлены параметры и их аргументы по умолчанию:
a=
Входные данные, где гистограмма рассчитывается по сплющенному массиву.
N/A
array-like
bins=
Количество интервалов одинаковой ширины или диапазонов, которые будут использоваться в качестве интервалов.
10
int or sequence
range=
Нижний и верхний диапазон значений
None
(float, float)
normed=
Эквивалент аргумента плотности (устарел с версии 1.6.0). Будет давать неправильные результаты, если контейнеры неравны.
None
bool
weights=
Массив весов той же формы, что и a, где каждое значение имеет только связанный с ним вес.
None
array-like
density=
Если значение равно False
, возвращается количество выборок в каждом интервале. Если True
, возвращает функцию плотности вероятности в интервале.
None
bool
Теперь, когда у вас есть хорошее понимание того, как функция работает, давайте посмотрим, как ее можно использовать.
Создание гистограммы с помощью NumPy в Python
В этом разделе вы узнаете, как создать базовую гистограмму с помощью функции гистограммы NumPy. Для этого давайте создадим массив случайных значений от 0 до 100, используя функцию np.random.randint()
:
Этот код использует библиотеку NumPy для генерации массива случайных чисел размером 100 из диапазона от 0 до 100. Функция np.random.seed(100)
используется для установки начального состояния генератора случайных чисел для воспроизводимости результатов.
Мы сгенерировали массив после создания начального числа. Использование функции np.random.seed()
позволяет нам генерировать воспроизводимые результаты. Теперь, когда у нас есть наш массив, давайте передадим его в функцию np.histogram()
со значениями аргументов по умолчанию. Это позволит нам лучше понять, как функция работает:
Этот код использует библиотеку NumPy для генерации массива случайных чисел размером 100 из диапазона от 0 до 100. Затем функция np.histogram()
вычисляет гистограмму этого массива. Результатом будет кортеж из двух массивов: массив гистограммы (число элементов в каждом интервале) и массив с границами интервалов.
Давайте разберем, что делает приведенный выше код:
Мы загружаем наш массив таким же образом, как это делали ранее. Обратите внимание, что наши значения включают минимальное значение 0 и максимальное значение 100.
Затем мы передаём этот массив в функцию
np.histogram()
и печатаем результаты.
Функция возвращает два массива: (1) количество значений, попавших в каждый интервал, и (2) границы интервалов. Все границы интервалов являются полуоткрытыми, за исключением последней пары. Это означает, что первый интервал начинается от 0 включительно до 10 исключительно, и так далее.
Из результатов видно, что 13 значений попадают в первый интервал, что означает, что 13 значений находятся в диапазоне [0, 10). Поскольку аргумент по умолчанию для функции - bins=10
, интервалы охватывают диапазон от минимального значения (0) до максимального значения (100), деленный на 10.
Поскольку функция возвращает два значения, мы можем присвоить каждый из результатов своим переменным, как показано ниже:
Этот код использует библиотеку NumPy для генерации массива случайных чисел размером 100 из диапазона от 0 до 100. Затем функция np.histogram()
вычисляет гистограмму этого массива. Переменная hist
содержит массив гистограммы (число элементов в каждом интервале), а переменная bin_edges
содержит массив с границами интервалов.
В приведенном выше коде мы использовали f-строки Python для аккуратного вывода переменных (эта функция доступна только в Python 3.8+). Теперь, когда вы видели, что производит функция с её аргументами по умолчанию, давайте посмотрим, как вы можете настроить функцию, изменяя параметр bins=
Настройка ячеек в гистограммах NumPy
В этом разделе вы научитесь настраивать разбиение на корзины в гистограммах NumPy. По умолчанию функция гистограммы NumPy использует параметр bins=10
. Это означает, что NumPy разделит диапазон значений на десять корзин одинакового размера.
Настройка количества интервалов в гистограммах NumPy
Мы можем изменить количество интервалов в гистограмме NumPy, передав целое число в аргумент bins=
. Как было сказано ранее, по умолчанию NumPy создает 10 интервалов. Давайте посмотрим, как мы можем изменить функцию для создания пяти интервалов вместо десяти:
Этот код использует библиотеку NumPy для генерации массива случайных чисел размером 100 из диапазона от 0 до 100. Затем функция np.histogram()
вычисляет гистограмму этого массива, используя 5 интервалов. Переменная hist
содержит массив гистограммы (число элементов в каждом интервале), а переменная bin_edges
содержит массив с границами интервалов.
В следующем разделе вы узнаете, как настроить диапазоны ячеек.
Настройка диапазонов интервалов в гистограммах NumPy
Функция гистограммы NumPy также позволяет вручную определять края корзин. Преимущество этого заключается в том, что это позволяет настраивать корзины неравного размера. Это может быть особенно полезно, если вы работаете с категориальными данными, такими как возрастные группы.
Давайте посмотрим, как мы можем определить некоторые логические интервалы для нашей гистограммы NumPy, которые имитируют возрастные группы:
Этот код использует библиотеку NumPy для генерации массива случайных чисел размером 100 из диапазона от 0 до 100. Затем функция np.histogram()
вычисляет гистограмму этого массива, используя пользовательские интервалы [минимальное значение массива, 18, 65, максимальное значение массива]. Переменная hist
содержит массив гистограммы (число элементов в каждом интервале), а переменная bin_edges
содержит массив с границами интервалов.
В NumPy края будут определены как включающие левую границу и исключающие правую. Это означает, что левая граница будет включена, а все значения до (но не включая) правой границы также будут учтены.
Возврат функции плотности вероятности с помощью гистограмм NumPy
NumPy также позволяет возвращать функцию плотности вероятности гистограммы. Это означает, что значения нормализуются таким образом, что их интеграл равен 1. Это эффективно демонстрирует долю значений, которые попадают в каждую группу.
Давайте посмотрим, как мы можем вернуть функцию плотности вероятности в гистограммах NumPy:
Этот код использует библиотеку NumPy для генерации массива случайных чисел размером 100 из диапазона от 0 до 100. Затем функция np.histogram()
вычисляет гистограмму этого массива с нормализацией (density=True), что приводит к вычислению функции плотности вероятности вместо числа элементов в каждом интервале. Переменная hist
содержит массив значений функции плотности вероятности, а переменная bin_edges
содержит массив с границами интервалов.
В следующем разделе вы узнаете, как изменить диапазон значений, который охватывает гистограмма NumPy.
Изменение диапазона значений с помощью гистограмм NumPy
По умолчанию NumPy будет включать в гистограммы, создаваемые функцией np.histogram()
, весь диапазон значений. Вы можете изменить это поведение, задав параметру range=
кортеж из чисел с плавающей точкой.
Давайте посмотрим, как мы можем изменить поведение функции, чтобы она показывала только значения от 0 до 50:
Этот код использует библиотеку NumPy для генерации массива случайных чисел размером 100 из диапазона от 0 до 100. Затем функция np.histogram()
вычисляет гистограмму этого массива с заданным диапазоном значений от 0.0 до 50.0. Переменная hist
содержит массив гистограммы (число элементов в каждом интервале), а переменная bin_edges
содержит массив с границами интервалов.
Заключение
В этом уроке вы научились использовать функцию np.histogram()
для создания гистограмм в NumPy. Сначала вы узнали, как работает функция, познакомившись с её параметрами и аргументами по умолчанию. Затем вы научились использовать функцию для создания гистограмм. После этого вы узнали, как настраивать количество и диапазоны интервалов. Вы также научились вычислять функцию плотности вероятности и как изменять общий диапазон значений.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с нижеприведенными руководствами:
Last updated