numpy.histogram()

Функция numpy.histogram() вычисляет гистограмму набора данных — распределяет элементы по корзинам (bins) и подсчитывает количество в каждой. Используется для анализа распределения значений.

Сигнатура

numpy.histogram(a, bins=10, range=None, density=None, weights=None)

Параметры

  • a — входные данные.

  • bins — число корзин (int), либо список границ, либо строка-метод ('auto', 'fd', 'scott', 'sturges'…).

  • range — кортеж (min, max) — диапазон значений (вне диапазона игнорируются).

  • density — если True, возвращает плотность вероятности (нормированную).

  • weights — веса элементов.

Возвращаемое значение

Кортеж (hist, bin_edges):

  • hist — массив длиной bins с количествами (или плотностями);

  • bin_edges — массив длиной bins+1 с границами корзин.

Примеры

Пример 1. Простая гистограмма.

import numpy as np

data = np.array([1, 2, 1, 3, 4, 5, 5, 2, 1, 4])
hist, edges = np.histogram(data, bins=5)
print("hist:", hist)
print("edges:", edges)
hist: [3 2 1 2 2]
edges: [1.  1.8 2.6 3.4 4.2 5. ]

Пример 2. Заданные границы.

data = np.array([0.5, 1.5, 2.5, 1.0, 2.0])
hist, edges = np.histogram(data, bins=[0, 1, 2, 3])
print(hist)
[1 2 2]

Пример 3. Диапазон range.

data = np.array([1, 5, 10, 15, 20, 25, 30])
hist, _ = np.histogram(data, bins=3, range=(0, 30))
print(hist)
[2 2 3]

Пример 4. Распределение показаний термодатчика.

readings = np.array([22.1, 22.5, 23.0, 22.3, 22.7, 23.1, 22.4, 22.9])
hist, edges = np.histogram(readings, bins=4)
for i in range(4):
    print(f"{edges[i]:.2f}-{edges[i+1]:.2f}: {hist[i]}")
22.10-22.35: 2
22.35-22.60: 2
22.60-22.85: 1
22.85-23.10: 3

Пример 5. Плотность вероятности.

data = np.array([1, 2, 2, 3, 3, 3, 4, 4, 5])
hist, edges = np.histogram(data, bins=4, density=True)
print("density:", hist.round(3))
# Площадь под гистограммой = 1
print("area:", (hist * np.diff(edges)).sum())
density: [0.111 0.222 0.333 0.333]
area: 1.0

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.