Adloun

Python (école d'ingénieur) · Chapitre 8 · Exercice

Normalisation par broadcasting

Calcul scientifique avec NumPy

Énoncé

Soit une matrice de taille représentant points dans un espace à dimensions.

  • Créer une matrice de forme avec des valeurs aléatoires.
  • Calculer la moyenne de chaque colonne.
  • Centrer la matrice (soustraire la moyenne de chaque colonne à tous les éléments de cette colonne) en une seule opération vectorisée.
  • Calculer l'écart-type de chaque colonne.
  • Normaliser la matrice centrée (diviser par l'écart-type de chaque colonne).

Corrigé

import numpy as np

np.random.seed(42)

# 1. Matrice 5x3 aléatoire
X = np.random.rand(5, 3) * 10
print("Matrice originale X :")
print(X)
print()

# 2. Moyenne par colonne
moyennes = np.mean(X, axis=0)
print(f"Moyennes par colonne : {moyennes}")
print()

# 3. Centrage (broadcasting)
X_centre = X - moyennes  # moyennes est (3,) broadcasté sur (5,3)
print("Matrice centrée :")
print(X_centre)
print(f"Moyennes après centrage : {np.mean(X_centre, axis=0)}")
print()

# 4. Écart-type par colonne
ecarts = np.std(X_centre, axis=0)
print(f"Écarts-type par colonne (avant normalisation) : {ecarts}")
print()

# 5. Normalisation
X_norm = X_centre / ecarts  # broadcasting
print("Matrice normalisée (moyenne 0, écart-type 1) :")
print(X_norm)
print(f"Moyennes : {np.mean(X_norm, axis=0)}")
print(f"Écarts-type : {np.std(X_norm, axis=0)}")

L'exécution de ce script affiche :

Matrice originale X :
[[3.74540119 9.50714306 7.31993942]
 [5.98658484 1.56018641 1.55994519]
 [0.58083613 8.66176145 6.01115005]
 [7.08072578 0.20584491 9.69909852]
 [2.12339114 1.8182497  8.32442641]]

Moyennes par colonne : [3.90338782 4.35063711 6.58291192]

Matrice centrée :
[[-0.15798663  5.15650595  0.7370275 ]
 [ 2.08319702 -2.7904507  -5.02296673]
 [-3.32255169  4.31112434 -0.57176187]
 [ 3.17733797 -4.1447922   3.1161866 ]
 [-1.77999683 -2.53238741  1.74151449]]

Moyennes après centrage : [ 0.00000000e+00 -2.22044605e-16  0.00000000e+00]

Écarts-type par colonne (avant normalisation) : [2.37424451 3.40065757 5.0934149 ]

Matrice normalisée (moyenne 0, écart-type 1) :
[[-0.06653721  1.5163275   0.26798725]
 [ 0.87720991 -0.82057754 -1.82644768]
 [-1.39943139  1.26790274 -0.20792193]
 [ 1.33825218 -1.21891426  1.13322297]
 [-0.74949348 -0.74473843  0.63315939]]
Moyennes : [ 0.00000000e+00 -1.11022302e-16  5.55111512e-17]
Écarts-type : [1. 1. 1.]

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →