Функция histogram2d
Функция histogram2d вычисляет двумерную гистограмму
для двух наборов данных. Первым параметром передаётся
массив значений по оси X, вторым - массив значений по оси Y.
Третьим параметром можно задать количество бинов
(целое число или кортеж из двух чисел), четвёртым - границы бинов
в виде кортежа из двух массивов или диапазонов.
Функция возвращает кортеж из трёх элементов: двумерный массив
гистограммы, массив границ по оси X и массив границ по оси Y.
Синтаксис
np.histogram2d(x, y, bins=10, range=None)
Пример
Построим простую двумерную гистограмму для случайных точек:
import numpy as np
rng = np.random.default_rng(0)
x = rng.normal(0, 1, 1000)
y = rng.normal(0, 1, 1000)
hist, x_edges, y_edges = np.histogram2d(x, y, bins=5)
print(hist)
Результат выполнения кода:
[[ 1. 2. 1. 0. 0.]
[ 5. 17. 38. 16. 4.]
[ 5. 54. 94. 53. 6.]
[ 0. 20. 34. 12. 3.]
[ 0. 1. 6. 3. 1.]]
Пример
Укажем разное количество бинов по осям X и Y:
import numpy as np
rng = np.random.default_rng(1)
x = rng.uniform(0, 10, 500)
y = rng.uniform(0, 5, 500)
hist, x_edges, y_edges = np.histogram2d(x, y, bins=(3, 2))
print(hist)
Результат выполнения кода:
[[ 58. 83.]
[ 86. 87.]
[ 91. 95.]]
Пример
Зададим явные границы бинов для обеих осей:
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 3, 2, 4, 5])
hist, x_edges, y_edges = np.histogram2d(
x, y,
bins=3,
range=[[0, 6], [0, 6]]
)
print(hist)
print("x_edges:", x_edges)
print("y_edges:", y_edges)
Результат выполнения кода:
[[1. 0. 0.]
[1. 1. 1.]
[0. 0. 1.]]
x_edges: [0. 2. 4. 6.]
y_edges: [0. 2. 4. 6.]
Пример
Используем веса для взвешенной гистограммы:
import numpy as np
rng = np.random.default_rng(2)
x = rng.uniform(0, 10, 100)
y = rng.uniform(0, 10, 100)
weights = rng.uniform(0.5, 1.5, 100)
hist, x_edges, y_edges = np.histogram2d(
x, y,
bins=4,
weights=weights
)
print(np.round(hist, 2))
Результат выполнения кода:
[[6.23 5.41 6.56 7.7 ]
[6.47 5.52 6.4 6.47]
[5.03 6.45 5.98 5.19]
[6.04 6.51 6.45 6.78]]
Смотрите также
-
функцию
histogram,
которая строит одномерную гистограмму -
функцию
histogramdd,
которая строит многомерную гистограмму -
функцию
bincount,
которая подсчитывает количество вхождений каждого значения -
функцию
digitize,
которая возвращает индексы бинов для каждого значения