Каков хороший способ сгруппировать числовые значения в определенный диапазон? Например, предположим, что у меня есть список значений, и я хочу разбить их на N ячеек по их диапазону. Прямо сейчас я делаю что-то вроде этого:
from scipy import *
num_bins = 3 # number of bins to use
values = # some array of integers...
min_val = min(values) - 1
max_val = max(values) + 1
my_bins = linspace(min_val, max_val, num_bins)
# assign point to my bins
for v in values:
best_bin = min_index(abs(my_bins - v))
где min_index возвращает индекс минимального значения. Идея состоит в том, что вы можете найти ячейку, в которую попадает точка, увидев, с какой ячейкой она имеет наименьшую разницу.
Но я думаю, что это имеет странные крайние случаи. То, что я ищу, - это хорошее представление бинов, в идеале полузакрытых и полуоткрытых (чтобы не было возможности присвоить одну точку двум бинам), т.е.
bin1 = [x1, x2)
bin2 = [x2, x3)
bin3 = [x3, x4)
etc...
как это сделать на Python, используя numpy/scipy? Меня здесь интересуют только целочисленные значения.
Большое спасибо за вашу помощь.