Как просто установить альтернативные условия неравенства для гистограммы NumPy?
В соответствии с примером в цифровой документации,
>>> np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]))
Смотря на 1
мы замечаем, что во втором бункере есть два вхождения, то есть бины считаются диапазоном left <= x_i < right
, Предположим, кто-то хотел переключить это так, что left < x_i <= right
, Есть ли простой способ сделать это в NumPy?
1 ответ
Решение
np.histogram()
использования np.searchsorted(..., side='right')
вычислить номер корзины для каждого значения образца. Так что вы можете сделать:
import numpy as np
data = [1, 2, 1]
bins = [0, 1, 2, 3]
hist = np.zeros(len(bins) - 1, dtype=int)
bin_numbers = np.searchsorted(bins, data, side='left')
for idx, val in zip(*np.unique(bin_numbers, return_counts=True)):
hist[idx - 1] = val
result = hist, bins
result
является:
(array([2, 1, 0]), [0, 1, 2, 3])