NumPy Python - Exercices interactifs et explications en français
NumPy est la brique de base de tout le calcul scientifique en Python. Pandas, scikit-learn, matplotlib, PyTorch - tous l'utilisent en interne. Comprendre NumPy, c'est comprendre comment la data se traite vraiment vite en Python.
Pourquoi NumPy ?
Une liste Python classique est flexible mais lente pour le calcul numérique. Un tableau NumPy (ndarray) stocke les données en mémoire contiguë et typée, ce qui permet des calculs en C derrière - souvent 10 à 100 fois plus rapidequ'une boucle Python.
La magie de NumPy, c'est la vectorisation: appliquer une opération à tout un tableau d'un coup, sans écrire de boucle. C'est plus rapide, plus concis, et souvent plus lisible.
Les concepts clés
Créer un tableau et vectoriser
Convertir une liste Python en ndarray ouvre la porte à toutes les opérations vectorisées.
import numpy as np
# Prix HT → TTC (TVA 20%) en une ligne
prix_ht = np.array([10, 20, 30, 40])
prix_ttc = prix_ht * 1.2
# [12. 24. 36. 48.]
# Générer des grilles
indices = np.arange(10) # 0..9
grille = np.linspace(0, 1, 5) # 5 points équidistantsMasques booléens : filtrer sans boucle
Une comparaison sur un tableau renvoie un tableau de True/False qu'on peut ré-appliquer pour filtrer. Équivalent vectorisé d'un WHERE SQL.
ventes = np.array([120, 85, 240, 50, 310, 90, 180])
# Garder uniquement les grosses ventes
grosses = ventes[ventes > 100]
# [120 240 310 180]
# Classification avec np.where (équivalent CASE WHEN)
categories = np.where(temperatures >= 25, 'chaud', 'froid')Agréger par axe
Sur une matrice 2D, on précise sur quel axe agréger. Règle simple : l'axe indiqué est celui qui disparaît.
# Ventes : 3 magasins × 3 mois
ventes = np.array([[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])
# Total par magasin (axis=1 → résultat par ligne)
total_par_magasin = ventes.sum(axis=1) # [60, 150, 240]
# Total par mois (axis=0 → résultat par colonne)
total_par_mois = ventes.sum(axis=0) # [120, 150, 180]Broadcasting : opérer sur des shapes différentes
NumPy aligne automatiquement les dimensions quand elles sont compatibles. C'est ce qui permet de soustraire la moyenne de chaque ligne d'une matrice sans boucle.
# Ventes par produit (lignes) × mois (colonnes)
# Écart de chaque mois à la moyenne du produit
moyennes = ventes.mean(axis=1).reshape(-1, 1) # (3, 1)
ecarts = ventes - moyennes # (3, 4)Détection d'outliers avec le z-score
Une application concrète : repérer automatiquement les valeurs anormales d'une série. Classique en monitoring de métrique (latence, temps de réponse…).
latences = np.array([10, 12, 11, 13, 10, 9, 42, 11, 12, 10])
# z-score : (valeur - moyenne) / écart-type
z = (latences - latences.mean()) / latences.std()
# Anormales = |z| > 2
anormales = latences[np.abs(z) > 2] # [42]Cas d'usage concrets
🔬 Calcul scientifique
Simulations, statistiques, algèbre linéaire. NumPy est le langage commun de toute la recherche en data science.
🤖 Pré-traitement ML
Avant de nourrir un modèle, on normalise, on encode, on reshape - des tâches où NumPy brille.
📈 Traitement de signaux
IoT, capteurs, finance - dès qu'on a des séries de mesures à filtrer, lisser ou agréger, NumPy est la bonne réponse.
🏎️ Accélérer Python
Quand une boucle Python est trop lente, vectoriser avec NumPy donne souvent un gain de 10× à 100× gratuit.
Passe à la pratique
27 exercices interactifs pour maîtriser NumPy - de la création d'un tableau au z-score appliqué à un vrai cas de monitoring.
Créer mon compte gratuit