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.