Broadcast et opérations vectorisées
Remplacer les boucles par des opérations sur tableaux.
Diffuser sans boucle
import numpy as np
X = np.array([[1., 2.], [3., 4.], [5., 6.]])
print(X - np.array([3., 4.]))
# [[-2. -2.] [0. 0.] [2. 2.]]
print(X * 2 + 1)
Le vecteur [3., 4.] est diffusé sur les 3 lignes : pas de for, un seul appel C, 10 à 100 fois plus rapide. Règle : les dimensions se comparent depuis la droite, 1 ou manquant = diffusion.
Réflexe
Boucle sur lignes pour soustraire une moyenne ? Remplacez par X - X.mean(axis=0). Si les formes refusent de diffuser, c'est souvent une colonne mal orientée : reshape(-1, 1) vs reshape(1, -1).
Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.