Dans NumPy, vous pouvez calculer la somme et le produit cumulรฉs ร l’aide des fonctions ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() , ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() ou des fonctions ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() et ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() de ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ .
- numpy.cumsum โ Manuel NumPy v1.24
 - numpy.cumprod โ Manuel NumPy v1.24
 - numpy.ndarray.cumsum โ Manuel NumPy v1.24
 - numpy.ndarray.cumprod โ Manuel NumPy v1.24
 
Cet article couvre les sujets suivants :
- La somme cumulรฉe : ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ()
 - Le produit cumulatif : ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ()
 
Vous pouvez รฉgalement calculer la somme et le produit cumulรฉs ร l’aide de fonctions et de mรฉthodes de la bibliothรจque standard de Python, d’itertools et de pandas. Avec itertools, vous pouvez appliquer n’importe quelle fonction de maniรจre cumulative.
- Calculer la somme et le produit cumulรฉs en Python (itertools.accumulate)
 - pandas : calculs cumulatifs (cumsum, cumprod, cummax, cummin)
 
La somme cumulรฉe : ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ()
Utilisation de la base
Considรฉrez le ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ unidimensionnel suivant.๐งโ๐โ๐โ๐ซโ๐ซ๐โ๐ฒโ :
import numpy as np print(np.__version__) # 1.19.0 a_1d = np.array([1, 2, 3, 4, 5, 6]) print(a_1d) # [1 2 3 4 5 6] 
Vous pouvez obtenir la somme cumulรฉe avec ๐งโ๐ฉโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() . La fonction renvoie un ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ , et vous pouvez dรฉfinir son type de donnรฉes ร l’aide de l’argument ๐โ๐ญโ๐ฒโ๐ฉโ๐โ .
print(np.cumsum(a_1d)) # [ 1 3 6 10 15 21] print(np.cumsum(a_1d, dtype=float)) # [ 1. 3. 6. 10. 15. 21.] 
La mรฉthode ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() est รฉgalement disponible pour ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ , avec les mรชmes arguments tels que ๐โ๐ญโ๐ฒโ๐ฉโ๐โ et ๐โ๐ฑโ๐ขโ๐ฌโ , comme dรฉcrit plus loin, que ceux de la mรฉthode Fonction ๐งโ๐ฉโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() .
print(a_1d.cumsum()) # [ 1 3 6 10 15 21] print(a_1d.cumsum(dtype=float)) # [ 1. 3. 6. 10. 15. 21.] 
Le premier argument de ๐งโ๐ฉโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() peut รชtre un objet de type tableau, comme une liste, et pas seulement un ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ . Cependant, le rรฉsultat est toujours un ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ .
l = [1, 2, 3, 4, 5, 6] print(np.cumsum(l)) # [ 1 3 6 10 15 21] print(type(np.cumsum(l))) # <class 'numpy.ndarray'> 
Pour convertir un ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ en liste, reportez-vous ร l’article suivant :
Pour les tableaux multidimensionnels
Considรฉrez le ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ bidimensionnel suivant.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ :
a_2d = a_1d.reshape(2, 3) print(a_2d) # [[1 2 3] # [4 5 6]] 
Par dรฉfaut, une somme cumulative unidimensionnelle aplatie est gรฉnรฉrรฉe pour les tableaux multidimensionnels.
print(np.cumsum(a_2d)) # [ 1 3 6 10 15 21] 
En spรฉcifiant l’argument ๐โ๐ฑโ๐ขโ๐ฌโ , vous pouvez calculer la somme cumulรฉe pour chaque axe (dimension). Pour un tableau ร deux dimensions, ๐โ๐ฑโ๐ขโ๐ฌโ=0 est exprimรฉ en colonnes et ๐โ๐ฑโ๐ขโ๐ฌโ=1 est exprimรฉ en lignes.
print(np.cumsum(a_2d, axis=0)) # [[1 2 3] # [5 7 9]] print(np.cumsum(a_2d, axis=1)) # [[ 1 3 6] # [ 4 9 15]] 
La mรชme chose a choisi s’applique ร la mรฉthode ๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() de ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ .
print(a_2d.cumsum()) # [ 1 3 6 10 15 21] print(a_2d.cumsum(axis=0)) # [[1 2 3] # [5 7 9]] print(a_2d.cumsum(axis=1)) # [[ 1 3 6] # [ 4 9 15]] 
La mรชme chose a choisi s’applique lors de la spรฉcification d’une liste de listes (= liste 2D) comme premier argument de ๐งโ๐ฉโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() .
l_2d = [[1, 2, 3], [4, 5, 6]] print(np.cumsum(l_2d)) # [ 1 3 6 10 15 21] print(np.cumsum(l_2d, axis=0)) # [[1 2 3] # [5 7 9]] print(np.cumsum(l_2d, axis=1)) # [[ 1 3 6] # [ 4 9 15]] 
Notez que si les listes internes contiennent un nombre d’รฉlรฉments diffรฉrents, le rรฉsultat peut ne pas รชtre celui attendu. Dans ce cas, il est traitรฉ comme un tableau avec chaque liste comme รฉlรฉment au lieu d’un tableau multidimensionnel.
l_2d_error = [[1, 2, 3], [4, 5]] print(np.cumsum(l_2d_error)) # [list([1, 2, 3]) list([1, 2, 3, 4, 5])] 
Le produit cumulatif : ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ()
Vous pouvez calculer le produit cumulรฉ ร l’aide de ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() . L’utilisation est la mรชme que pour ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() mentionnรฉ ci-dessus. La mรฉthode ๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() est รฉgalement fournie pour ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐งโ๐โ๐โ๐ซโ๐ซโ๐โ๐ฒโ .
print(np.cumprod(a_1d)) # [ 1 2 6 24 120 720] print(np.cumprod(a_1d, dtype=float)) # [ 1. 2. 6. 24. 120. 720.] print(a_1d.cumprod()) # [ 1 2 6 24 120 720] print(a_1d.cumprod(dtype=float)) # [ 1. 2. 6. 24. 120. 720.] 
Pour les tableaux multidimensionnels :
print(np.cumprod(a_2d)) # [ 1 2 6 24 120 720] print(np.cumprod(a_2d, axis=0)) # [[ 1 2 3] # [ 4 10 18]] print(np.cumprod(a_2d, axis=1)) # [[ 1 2 6] # [ 4 20 120]] print(a_2d.cumprod()) # [ 1 2 6 24 120 720] print(a_2d.cumprod(axis=0)) # [[ 1 2 3] # [ 4 10 18]] print(a_2d.cumprod(axis=1)) # [[ 1 2 6] # [ 4 20 120]] 
Comme ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฌโ๐ฎโ๐ฆโ() , vous pouvez dรฉfinir des objets de type tableau, tels que des listes, comme arguments pour ๐งโ๐ฎโ๐ฆโ๐ฉโ๐ฒโ.๐โ๐ฎโ๐ฆโ๐ฉโ๐ซโ๐จโ๐โ() .
print(np.cumprod(l)) # [ 1 2 6 24 120 720] print(np.cumprod(l_2d)) # [ 1 2 6 24 120 720] print(np.cumprod(l_2d, axis=0)) # [[ 1 2 3] # [ 4 10 18]] print(np.cumprod(l_2d, axis=1)) # [[ 1 2 6] # [ 4 20 120]] 
