Accès rapide :
Introduction
Sommes, minimums et maximums
Quelques statistiques simples
Comprendre l'argument axis
Moyennes par ligne et par colonne
Retrouver la position d'une valeur extrême
Positions par colonne
Conserver les dimensions
Une agrégation consiste à résumer plusieurs valeurs en une seule valeur, ou en un tableau plus petit. NumPy fournit de nombreuses fonctions pour calculer rapidement des sommes, moyennes, minimums, maximums et autres statistiques simples.
Pour bien utiliser ces fonctions, il faut comprendre l'argument axis. Il indique la
direction dans laquelle le calcul doit être effectué.
Les fonctions d'agrégation les plus simples travaillent sur toutes les valeurs du tableau.
1 2 3 4 5 6 7 |
import numpy as np m = np.array([[10, 12, 14], [8, 15, 11], [13, 9, 16]]) print(m.sum()) print(m.min()) print(m.max()) |
108 8 16
NumPy sait aussi calculer les statistiques courantes : moyenne, médiane, écart type et variance.
1 2 3 4 5 6 7 |
import numpy as np m = np.array([[10, 12, 14], [8, 15, 11], [13, 9, 16]]) print(m.mean()) print(np.median(m)) print(round(m.std(), 2)) |
12.0 12.0 2.58
Avec une matrice, axis=0 calcule colonne par colonne, tandis que axis=1
calcule ligne par ligne.
1 2 3 4 5 6 |
import numpy as np m = np.array([[10, 12, 14], [8, 15, 11], [13, 9, 16]]) print(m.sum(axis=0)) print(m.sum(axis=1)) |
[31 36 41] [36 34 38]
Le premier résultat contient une somme par colonne. Le second contient une somme par ligne.
Le même principe s'applique aux fonctions statistiques.
1 2 3 4 5 6 |
import numpy as np m = np.array([[10, 12, 14], [8, 15, 11], [13, 9, 16]]) print(m.mean(axis=0)) print(m.mean(axis=1)) |
[10.33333333 12. 13.66666667] [12. 11.33333333 12.66666667]
Les fonctions argmin et argmax ne retournent pas la valeur minimale ou maximale,
mais sa position.
1 2 3 4 5 6 7 |
import numpy as np values = np.array([42, 12, 75, 18]) pos = values.argmax() print(pos) print(values[pos]) |
2 75
La valeur maximale est 75, et elle se trouve à l'indice 2.
On peut aussi chercher les positions des maximums sur un axe donné.
1 2 3 4 5 |
import numpy as np m = np.array([[10, 12, 14], [8, 15, 11], [13, 9, 16]]) print(m.argmax(axis=0)) |
[2 1 2]
L'argument keepdims=True conserve les dimensions réduites avec une taille de un. C'est très
pratique pour enchaîner avec du broadcasting.
1 2 3 4 5 6 7 |
import numpy as np m = np.array([[10, 12, 14], [8, 15, 11], [13, 9, 16]]) means = m.mean(axis=0, keepdims=True) print(means) print(m - means) |
[[10.33333333 12. 13.66666667]] [[-0.33333333 0. 0.33333333] [-2.33333333 3. -2.66666667] [ 2.66666667 -3. 2.33333333]]
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :