Ich mag würde eine nette Funktion zu aggregierten Daten unter einem Array machen (es ist ein numpy Rekord-Array, aber es ändert nichts)pythonic Weg zu aggregieren Arrays (numpy oder nicht)
Sie haben eine Reihe von Daten, die Sie wollen unter einer Achse aggregieren: zum Beispiel eine Reihe von dtype=[(name, (np.str_,8), (job, (np.str_,8), (income, np.uint32)]
und Sie das durchschnittliche Einkommen pro Job
ich diese Funktion habe haben wollen, und im Beispiel sollte es als aggregate(data,'job','income',mean)
genannt werden
def aggregate(data, key, value, func):
data_per_key = {}
for k,v in zip(data[key], data[value]):
if k not in data_per_key.keys():
data_per_key[k]=[]
data_per_key[k].append(v)
return [(k,func(data_per_key[k])) for k in data_per_key.keys()]
das Problem ist, dass ich es nicht sehr schön finde ich möchte es in einer Zeile haben: Hast du irgendwelche Ideen? Louis
Vielen Dank für Ihre Antwort
PS: Ich möchte die func im Aufruf halten, so dass Sie auch für mittlere fragen, mindestens ...
Ich weiß nicht numpy, aber Ihr 'dtype' scheint ein Problem mit den Klammern zu haben .. – int3
Die Klammern stimmen nicht überein. Macht etwas zusätzliche Verwirrung. –
Ich verstehe Ihren Kommentar nicht, dass Sie "es in einer Zeile haben möchten". Wenn Sie die Funktion aufrufen, wird das eine Zeile sein. Spielt es eine Rolle, wie viele Zeilen die Funktion selbst hat? Wie auch immer, ich denke deine beste Wette ist, 'defaultdict' zu verwenden, wie die Antworten sagen. – steveha