calculer la moyenne et la variance avec une itération

J'ai un itérateur de nombres, par exemple, un fichier objet:

f = open("datafile.dat")

maintenant, je veux calculer:

mean = get_mean(f)
sigma = get_sigma(f, mean)

Quelle est la meilleure mise en œuvre? Supposons que le fichier est gros et je voudrais éviter de le lire deux fois.

Voulez-vous éviter de lire le fichier deux fois, ou d'éviter de l'itération deux fois?
Je ne crois pas que tu nous montre le code complet. Vous êtes de passage d'un fichier à get_mean()fsum() accepte uniquement des listes de numéros.
Pourquoi avez-vous besoin de placer une restriction relative à la modification de la fonction? Si vous réarrangé la formule de la variance, je pense que vous pouvez obtenir en quelque chose comme sqrt(1/(n-1)*(sum(li**2 pour li en l) + nmmsomme(li pour li en l) + n*mm)) où n est len(l). C'est, si mon calcul est correct. Ensuite, vous pouvez parcourir une fois, le calcul de la somme des termes ci-dessus refactoring et la moyenne en même temps.
vous avez raison, j'ai reformulé la question
quelle est la taille de votre fichier?

OriginalL'auteur Ruggero Turra | 2010-02-26