Listen aufspalten/binnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
frixhax
User
Beiträge: 39
Registriert: Donnerstag 21. April 2011, 14:06

Hallo!

Ich suche eine einfache Lösung für folgendes Problem:
Ich habe zwei Listen, x und y, mit dezimalen Wertepaaren (etwa 100.000). x = [1.45, 3.95, 12.10, 2.43, ...], y = [0.02, 0.31, 0.07, 0.12, ...].
Nun möchte ich diese beiden Listen aufspalten anhand der Integer-Werte von x, ich möchte quasi ein Binning haben in ganzzahligen Schritten, wobei die Zuordnung zwischen x und y erhalten bleibt. Sodass ich am Ende weiß, diese x-Werte liegen zwischen 0-1 und haben die zugehörigen y-Werte [...] und jene x-Werte liegen zwischen 1-2 und haben die zugehörigen y-Werte [...] usw.
Hat jemand eine Idee, wie sich das elegant lösen lässt?

Viele Grüße
Benutzeravatar
frixhax
User
Beiträge: 39
Registriert: Donnerstag 21. April 2011, 14:06

Ich habe mir gerade dazu folgenden Ansatz überlegt. Ist der gut bzw. geht's besser/eleganter? Das mit den Tupeln gefällt mir am Ende noch nicht, das macht den Zugriff auf die komplette Liste eines Bins im Anschluss umständlich...

Code: Alles auswählen

bins = np.arange(int(min(x)), int(max(x)), 1)

order = np.digitize(x, bins)

for i in range(len(bins)):
	lists.append([]) # Pro bin eine Liste für alle zugehörigen Wertepaare erstellen

for i in range(len(order)):
	lists[order[i-1].append((x[i], y[i])) # Einsortieren der Wertepaare in die jeweilige Liste
Antworten