J'ai un tableau de listes de nombres, par exemple :
[0] (0.01, 0.01, 0.02, 0.04, 0.03)
[1] (0.00, 0.02, 0.02, 0.03, 0.02)
[2] (0.01, 0.02, 0.02, 0.03, 0.02)
...
[n] (0.01, 0.00, 0.01, 0.05, 0.03)
Je voudrais calculer efficacement la moyenne et l'écart type à chaque indice d'une liste, sur tous les éléments du tableau.
Pour faire la moyenne, j'ai parcouru le tableau en boucle et j'ai additionné la valeur à un index donné d'une liste. A la fin, je divise chaque valeur de ma "liste de moyennes" par n
(Je travaille avec une population, pas un échantillon de la population).
Pour calculer l'écart-type, je repasse en boucle, maintenant que j'ai calculé la moyenne.
Je voudrais éviter de parcourir deux fois le tableau, une fois pour la moyenne et une fois pour l'écart-type (après avoir obtenu une moyenne).
Existe-t-il une méthode efficace pour calculer les deux valeurs, en ne parcourant le tableau qu'une seule fois ? Tout code dans un langage interprété (par exemple, Perl ou Python) ou pseudocode est acceptable.
7 votes
Langue différente, mais même algorithme : stackoverflow.com/questions/895929/
0 votes
Merci, je vais vérifier cet algorithme. Ça ressemble à ce dont j'ai besoin.
0 votes
Merci de m'avoir orienté vers la bonne réponse, dmckee. J'aimerais vous donner la coche "meilleure réponse", si vous voulez bien prendre un moment pour ajouter votre réponse ci-dessous (si vous voulez les points).
1 votes
Vous trouverez également plusieurs exemples à rosettacode.org/wiki/Standard_Deviation (écart type)
1 votes
Wikipedia propose une implémentation Python fr.wikipedia.org/wiki/
0 votes
J'aimerais avoir une réponse que je puisse simplement copier-coller dans mon code en numpy. Mon entrée est une matrice de taille [N, 1] où N est le nombre de points de données et j'ai déjà calculé la moyenne courante et je suppose que nous avons calculé la std/variance courante, comment mettre à jour nous le nouveau lot de données. Contexte : github.com/brando90/ultimate-anatome/issues/10
1 votes
Essayez peut-être cette implémentation numpy existante de l'algorithme de Welford : github.com/a-mitani/welford
1 votes
@AlexReynolds Je pensais le traduire en pytorch cependant...donc la partie copier coller était nécessaire...mais peut-être que cela peut être utilisé pour cela ou juste pour se brancher et jouer....thanks verra cela plus tard.