Ich versuche, eine Funktion zu erstellen, die ein Array nimmt, die Daten in diesem Array (nach Quantil) ablegt und ein Wörterbuch mit den klassierten Daten füllt. In dem Wörterbuch, das erzeugt wird, möchte ich, dass die Schlüssel bin-Nummern entsprechen und dass die Werte Listen von Daten aus dem Eingabe-Array sein sollen, die innerhalb der j-ten und (j + 1) -ten Bin-Grenzen liegen.Ein Wörterbuch mit Wertelisten füllen - warum läuft meine verschachtelte Schleife nur einmal?
Hier ist mein Code:
output = []
def binning(array1):
d1 = {} # empty dictionary to fill with lists of values
bin_edges = sp.stats.mstats.mquantiles(array1, prob=[0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875,1.00])
j = 0
while j < len(bin_edges):
for i in range(0, len(array1)):
if float(array1[i]) > bin_edges[j] and float(array1[i]) <= bin_edges[j+1]:
output.append(array1[i])
d1["bin_number{0}".format(j)]= output
j+=1
return d1
Das Problem ist, nur die innere Schleife einmal ausgeführt wird, so dass ich eine Ausgabe wie
d1 = {'bin_number0': [value1, value2, etc.]}.
bekommen, was ich will, ist sehen:
d1 = {'bin_number0': [value1, value2, etc.],'bin_number1': [value3, value4, etc.],'bin_number2': [value5, value6, etc.]}
... und so weiter, so gibt es 8 Tasten, die 8 Wertelisten entsprechen.
Kann mir jemand sagen, warum die innere Schleife nur einmal läuft (für j = 0)? Ich habe es so oft angeschaut, dass ich ein frisches Paar Augen brauche.