Как просто установить альтернативные условия неравенства для гистограммы NumPy? - PullRequest
0 голосов
/ 11 октября 2018

В соответствии с примером в документации 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 Ответ

0 голосов
/ 11 октября 2018

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])
...