18 Stimmen

Mittelwertberechnung in Python für einen Generator

Ich habe eine (große) Sammlung von Zufallszahlen, aus denen ich den Mittelwert berechnen möchte. Ich möchte mit Generatoren arbeiten, weil ich nur den Mittelwert berechnen muss, also brauche ich die Zahlen nicht zu speichern.

Das Problem ist, dass numpy.mean nicht funktioniert, wenn man ihm einen Generator übergibt. Ich kann eine einfache Funktion schreiben, um das zu tun, was ich will, aber ich frage mich, ob es einen richtigen, eingebauten Weg gibt, dies zu tun?

Es wäre schön, wenn ich sagen könnte "Summe(Werte)/len(Werte)", aber len funktioniert nicht für Genetatoren, und Summe hat bereits Werte verbraucht.

Hier ist ein Beispiel:

import numpy 

def my_mean(values):
    n = 0
    Sum = 0.0
    try:
        while True:
            Sum += next(values)
            n += 1
    except StopIteration: pass
    return float(Sum)/n

X = [k for k in range(1,7)]
Y = (k for k in range(1,7))

print numpy.mean(X)
print my_mean(Y)

Beide geben die gleiche, korrekte Antwort: my_mean funktioniert nicht für Listen, und numpy.mean funktioniert nicht für Generatoren.

Die Idee, mit Generatoren zu arbeiten, gefällt mir wirklich gut, aber Details wie dieses scheinen die Sache zu verderben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X