Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Sensibilisation à
l'Intelligence Artificielle
Voir le programme détaillé

Agrégations et statistiques simples avec NumPy

Broadcasting avec NumPy Tri, recherche et valeurs uniques


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

Introduction

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é.

Sommes, minimums et maximums

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())
Agrégations sur toutes les valeurs

108
8
16

Quelques statistiques simples

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))
Moyenne, médiane et écart type

12.0
12.0
2.58

Comprendre l'argument axis

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))
Sommes selon les axes

[31 36 41]
[36 34 38]

Le premier résultat contient une somme par colonne. Le second contient une somme par ligne.

Moyennes par ligne et par colonne

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))
Moyennes selon les axes

[10.33333333 12.         13.66666667]
[12.         11.33333333 12.66666667]

Retrouver la position d'une valeur extrême

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])
Utilisation de argmax

2
75

La valeur maximale est 75, et elle se trouve à l'indice 2.

Positions par colonne

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))
argmax selon un axe

[2 1 2]

Conserver les dimensions

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)
Utilisation de keepdims

[[10.33333333 12.         13.66666667]]
[[-0.33333333  0.          0.33333333]
 [-2.33333333  3.         -2.66666667]
 [ 2.66666667 -3.          2.33333333]]

Broadcasting avec NumPy Tri, recherche et valeurs uniques




Vous êtes un professionnel et vous avez besoin d'une formation ? Mise en oeuvre d'IHM
avec Qt et PySide6
Voir le programme détaillé