Skip to content

Dans NumPy, vous pouvez calculer la somme et le produit cumulรฉs ร  l’aide des fonctions ๐งโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ฒโ€Œ.๐œโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() , ๐งโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ฒโ€Œ.๐œโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ซโ€Œ๐จโ€Œ๐โ€Œ() ou des fonctions ๐œโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฌโ€Œ๐ฎโ€Œ๐ฆโ€Œ() et ๐œโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ซโ€Œ๐จโ€Œ๐โ€Œ() de ๐งโ€Œ๐ฎโ€Œ๐ฆโ€Œ๐ฉโ€Œ๐ฒโ€Œ.๐งโ€Œ๐โ€Œ๐šโ€Œ๐ซโ€Œ๐ซโ€Œ๐šโ€Œ๐ฒโ€Œ .

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.

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]]