Zuweisen von Punkten zu Behältern

Was ist ein guter Weg, um numerische Werte in einen bestimmten Bereich einzuteilen? Angenommen, ich habe eine Liste von Werten und möchte sie anhand ihres Bereichs in N Klassen einteilen. Im Moment mache ich so etwas:

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

Dabei gibt min_index den Index des Mindestwerts zurück. Die Idee ist, dass Sie den Behälter finden können, in den der Punkt fällt, indem Sie sehen, mit welchem Behälter der kleinste Unterschied besteht.

Aber ich denke, das hat seltsame Randfälle. Was ich suche, ist eine gute Darstellung von Behältern, idealerweise von Behältern, die halb geschlossen, halb offen sind (so dass es keine Möglichkeit gibt, zwei Behältern einen Punkt zuzuweisen), d. H.

bin1 = [x1, x2)
bin2 = [x2, x3)
bin3 = [x3, x4)
etc...

Was ist eine gute Möglichkeit, dies in Python mit numpy / scipy zu tun? Ich befasse mich hier nur mit dem Binning von Integer-Werten.

Vielen Dank für Ihre Hilfe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage