Le broadcasting est la règle qui permet à NumPy d'opérer sur des arrays de tailles différentes. Au lieu de planter, il "étend" automatiquement le plus petit pour matcher le plus grand.
matrix = np.array([[1, 2, 3], [4, 5, 6]])
matrix * 2
# → [[ 2 4 6]
# [ 8 10 12]]Le scalaire 2 est "diffusé" sur tous les éléments. C'est du broadcasting trivial.
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]) # shape (3, 3)
row = np.array([10, 20, 30]) # shape (3,)matrix + row
# → [[11 22 33]
# [14 25 36]
# [17 28 39]]Le vecteur row est ajouté à chaque ligne. NumPy étend row à la verticale.
col = np.array([[100], [200], [300]]) # shape (3, 1)matrix + col
# → [[101 102 103]
# [204 205 206]
# [307 308 309]]Le vecteur col est ajouté à chaque colonne.
Deux arrays sont compatibles si, en alignant leurs shapes À droite, chaque dimension :
- est égale,
- OU vaut 1,
- OU est absente.Exemple : (3, 3) + (3,) → (3, 3) car (3,) = (1, 3) étendu sur 3 lignes Exemple : (3, 3) + (3, 1) → (3, 3) car (3, 1) étendu sur 3 colonnes Exemple : (3, 3) + (2,) → ❌ shapes incompatibles
data = np.random.randn(100, 3) # 100 lignes, 3 features
centered = data - data.mean(axis=0) # mean = vecteur de 3 → broadcasting
normalized = centered / data.std(axis=0) # idemUne seule ligne suffit pour normaliser tout un dataset.
Le broadcasting évite des boucles explicites et rend le code mathématique plus court. Mais ça peut piéger : vérifie toujours .shape avant de combiner.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →