learn.chetana.fr

numpy : penser vectorisé

13 min readCore

Le contrat numpy

Un ndarray = un bloc mĂ©moire contigu et typĂ© (pas une liste d'objets Python). Toute opĂ©ration s'applique Ă  tout le tableau d'un coup, en C optimisĂ© (SIMD). Le changement mental : arrĂȘte de penser « pour chaque Ă©lĂ©ment », pense « sur toute la colonne ».

# ❌ rĂ©flexe backend            # ✅ rĂ©flexe numpy
result = []                     prix_ttc = prix * 1.20
for p in prix:                  # ...c'est tout.
    result.append(p * 1.20)

Les quatre mécanismes à maßtriser

  1. OpĂ©rations Ă©lĂ©ment par Ă©lĂ©ment : a * 2 + b — s'applique Ă  tout le tableau ;
  2. Broadcasting : opĂ©rer entre shapes diffĂ©rentes compatibles — matrice (1000, 3) - moyennes (3,) soustrait les moyennes Ă  chaque ligne, sans copie ;
  3. Masques boolĂ©ens : latences[latences > 500] — ton WHERE ;
  4. Agrégations par axe : data.mean(axis=0) = moyenne par colonne, axis=1 = par ligne. Le GROUP BY des tableaux.
🐍 À toi de jouer

Le piĂšge : les copies silencieuses

a[2:5] retourne une vue (pas de copie — modifier la vue modifie l'original !), mais a[mask] retourne une copie. Sur un tableau de 10 Go, la diffĂ©rence se voit dans ta RAM. RĂ©flexe : en cas de doute, np.shares_memory(a, b).

đŸ§© Quiz1/3

Pourquoi numpy est-il ~100× plus rapide qu'une boucle Python ?

🃏 Flashcards1/5