数値を特定の範囲にビン化する良い方法は何ですか? たとえば、値のリストがあり、それらを範囲ごとに 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 は最小値のインデックスを返します。アイデアは、どのビンとの差が最も小さいかを確認することで、ポイントが該当するビンを見つけることができるということです。
しかし、これには奇妙なエッジケースがあると思います。私が探しているのは、ビンの適切な表現です。理想的には、半分閉じて半分開いているビンです (したがって、1 つのポイントを 2 つのビンに割り当てる方法はありません)。
bin1 = [x1, x2)
bin2 = [x2, x3)
bin3 = [x3, x4)
etc...
numpy/scipyを使用してPythonでこれを行う良い方法は何ですか? ここでは、整数値のビニングのみに関心があります。
どうもありがとうございました。