Maison > développement back-end > Tutoriel Python > Comment puis-je calculer efficacement la somme cumulée d'une liste numérique ?

Comment puis-je calculer efficacement la somme cumulée d'une liste numérique ?

Mary-Kate Olsen
Libérer: 2024-12-08 08:49:10
original
986 Les gens l'ont consulté

How Can I Efficiently Calculate the Cumulative Sum of a Numerical List?

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
Copier après la connexion

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])
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal