присваивание очков бинам

Каков хороший способ поместить числовые значения в определенный диапазон? Например, предположим, у меня есть список значений, и я хочу объединить их в 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? Здесь меня интересуют только целочисленные значения.

Большое спасибо за вашу помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос