Comment calculer efficacement la somme cumulée des nombres dans une liste
Lors du traitement de données numériques, il est souvent nécessaire de calculer la somme cumulée de numéros dans une liste. Ici, nous proposons une solution complète et résolvons un problème soulevé par un utilisateur qui a tenté de additionner manuellement les éléments d'une liste.
Par exemple, étant donné time_interval = [4, 6, 12], l'utilisateur vise à calculez [4, 4 6, 4 6 12] pour obtenir la somme cumulée t = [4, 10, 22].
Manuel Approche :
L'utilisateur a d'abord tenté une approche manuelle en itérant sur la liste et en accumulant les sommes :
t1 = time_interval[0] t2 = time_interval[1] + t1 t3 = time_interval[2] + t2 print(t1, t2, t3) # -> 4 10 22
Cette approche nécessite cependant une itération explicite et peut devenir fastidieuse pour des listes plus grandes.
Implémentation Numpy :
Si vous effectuez fréquemment des opérations numériques sur les tableaux, numpy est une bibliothèque hautement recommandée qui fournit une fonction intégrée de sommation cumulative : cumsum. En utilisant numpy, la somme cumulée peut être calculée efficacement :
import numpy as np a = [4, 6, 12] np.cumsum(a) #array([4, 10, 22])
Comparaison des performances :
Numpy surpasse souvent les implémentations Python pures pour de telles opérations numériques. Une comparaison entre le cumsum de numpy et la fonction d'accumulation manuelle (accumu) de l'utilisateur démontre la différence :
In [136]: timeit list(accumu(range(1000))) 10000 loops, best of 3: 161 us per loop In [137]: timeit list(accumu(xrange(1000))) 10000 loops, best of 3: 147 us per loop In [138]: timeit np.cumsum(np.arange(1000)) 100000 loops, best of 3: 10.1 us per loop
Bien que numpy puisse introduire une dépendance, son efficacité peut justifier son utilisation si vous effectuez fréquemment des opérations numériques similaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!