РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
219 of 541 menu

Функция histogram

Функция histogram вычисляет гистограмму для одномерного массива данных. Первым параметром функция принимает массив данных, вторым параметром можно задать количество интервалов (по умолчанию 10). Функция возвращает кортеж из двух массивов: первый содержит частоты для каждого интервала, второй содержит границы интервалов.

Синтаксис

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

Основные параметры функции:

  • a - входной массив данных;
  • bins - количество интервалов (по умолчанию 10);
  • range - диапазон значений для гистограммы;
  • density - если True, возвращает плотность вероятности;
  • weights - весовые коэффициенты для данных.

Пример

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

import numpy as np rng = np.random.default_rng(0) data = rng.normal(0, 1, 1000) hist, bin_edges = np.histogram(data, bins=10) print("Histogram counts:") print(hist) print("\nBin edges:") print(bin_edges)

Результат выполнения кода:

Histogram counts: [ 4 21 72 148 217 244 161 96 31 6] Bin edges: [-2.97536146 -2.42660293 -1.8778444 -1.32908587 -0.78032734 -0.23156881 0.31718972 0.86594825 1.41470678 1.96346531 2.51222384]

В результате мы получили количество элементов в каждом интервале и границы самих интервалов.

Пример

Создадим гистограмму с заданными границами интервалов:

import numpy as np data = np.array([1, 2, 2, 3, 3, 3, 4, 4, 5]) bins = np.array([0, 2, 4, 6]) hist, bin_edges = np.histogram(data, bins=bins) print(hist) print(bin_edges)

Результат выполнения кода:

[2 5 2] [0 2 4 6]

Функция подсчитала, что в интервал [0, 2) попадает 2 элемента, в [2, 4) - 5 элементов, а в [4, 6] - 2 элемента.

Пример

Вычислим плотность вероятности с помощью параметра density:

import numpy as np rng = np.random.default_rng(0) data = rng.normal(0, 1, 1000) hist, bin_edges = np.histogram(data, bins=10, density=True) print("Density values:") print(hist) print("\nSum of densities * bin width:") print(np.sum(hist * np.diff(bin_edges)))

Результат выполнения кода:

Density values: [0.00729214 0.03828371 0.1312587 0.26976295 0.39551419 0.44479718 0.29350419 0.17500233 0.05650306 0.01093641] Sum of densities * bin width: 1.0

При включенном параметре density сумма произведений плотности на ширину интервала равна единице, что соответствует свойствам плотности распределения.

Пример

Используем весовые коэффициенты для построения взвешенной гистограммы:

import numpy as np data = np.array([1, 2, 2, 3, 3, 3, 4, 4, 5]) weights = np.array([0.5, 1, 1, 1.5, 1.5, 1.5, 2, 2, 2.5]) hist, bin_edges = np.histogram(data, bins=3, weights=weights) print(hist) print(bin_edges)

Результат выполнения кода:

[1.5 5. 8.5] [1. 2.33333333 3.66666667 5. ]

Каждый элемент данных учитывается с указанным весом. Это позволяет строить гистограммы с учётом значимости наблюдений.

Смотрите также

  • функцию histogram2d,
    которая вычисляет двумерную гистограмму
  • функцию histogramdd,
    которая вычисляет многомерную гистограмму
  • функцию bincount,
    которая подсчитывает количество вхождений каждого значения в массиве целых чисел
  • функцию digitize,
    которая определяет, в какой интервал попадает каждое значение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить