Ich kodiere einen Hash-Table-Ish-Indexierungsmechanismus, der eine Intervallzahl (0 bis n) einer Ganzzahl gemäß einer Menge von Teilungspunkten zurückgibt.Pythonische Methode zum Indexieren von Intervallen von Ganzzahlen von Teilungspunkten
Wenn beispielsweise ganze Zahlen im Wert 3 (ein Teilungspunkt, so dass zwei Intervalle) aufgeteilt sind, können wir die Intervallnummer für jedes Array-Element finden einen einfachen Vergleich verwendet:
>>> import numpy as np
>>> x = np.array(range(7))
>>> [int(i>3) for i in x]
[0, 0, 0, 0, 1, 1, 1]
Wenn es viele Intervalle können wir eine Funktion wie folgt definieren:
>>> def get_interval_id(input_value, splits):
... for i,split_point in enumerate(splits):
... if input_value < split_point:
... return i
... return len(splits)
...
>>> [get_interval_id(i, [2,4]) for i in x]
[0, 0, 1, 1, 2, 2, 2]
Aber diese Lösung sieht nicht elegant aus. Gibt es einen Python (besser) Weg, diesen Job zu machen?
Nein, sie beginnen bei 0. Wenn Sie möchten, dass sie anders beginnen, fügen Sie die Bins entsprechend ein. –
Danke. Genau das habe ich gesucht. Ich bin relativ wohl mit numpy, aber erkannte die Existenz dieser Funktion nicht. Der Name dieser Funktion ist nicht sehr intuitiv, zumindest für mich. Hast du irgendwelche Vorschläge, um mich besser mit numpy vertraut zu machen? –
Wenn Sie Ihre 'pandas' /' numpy' Fähigkeiten üben möchten, beginnen Sie Data Science. (zum Beispiel kaggle Wettbewerbe). Wenn meine Antwort Ihre Frage gelöst hat, akzeptieren Sie sie bitte. –