Skip to content
Learni
Voir tous les tutoriels
Python

Comment débuter avec NumPy en 2026

Read in English

Introduction

NumPy, abréviation de Numerical Python, est la bibliothèque fondamentale pour le calcul numérique en Python depuis 2006. Elle transforme Python en un outil puissant pour la data science, le machine learning et l'analyse scientifique, en gérant des millions de données avec une efficacité proche du C.

Pourquoi l'apprendre en 2026 ? Avec l'explosion des données (IA générative, big data), NumPy reste incontournable : 90 % des bibliothèques data (Pandas, SciPy, TensorFlow) s'appuient dessus. Imaginez un tableau Excel, mais en 100x plus rapide et multidimensionnel – c'est NumPy. Ce tutoriel conceptuel, sans code, se concentre sur la théorie pour bâtir une intuition solide. Vous comprendrez les tableaux ndarray, les opérations vectorisées et les pièges, pour des projets professionnels dès le départ. Idéal pour débutants motivés par l'analyse de données ou la simulation physique (128 mots).

Prérequis

  • Connaissances de base en Python (listes, boucles, fonctions).
  • Familiarité avec les concepts mathématiques : vecteurs, matrices.
  • Pas d'expérience en calcul scientifique requise.
  • Environnement Python installé (mais pas de code ici).

Qu'est-ce que NumPy et son ndarray ?

NumPy repose sur l'objet central : l'ndarray (N-dimensional array).

Contrairement aux listes Python flexibles mais lentes, un ndarray est un bloc contigu de mémoire homogène : tous les éléments ont le même type (int32, float64) et la même taille. Analogie : une feuille de calcul Excel figée en forme et type, optimisée pour le hardware.

Propriétés clés :

  • Forme (shape) : Tuple comme (3,4) pour 3 lignes x 4 colonnes.
  • Axe (axis) : 0 pour colonnes, 1 pour lignes – crucial pour les agrégations.
  • Dtype : Évite les conversions coûteuses ; float64 par défaut pour précision.

Exemple concret : Pour 1 million de températures, une liste Python consomme 10x plus de mémoire et 50x plus de temps. NumPy les stocke en un bloc vectoriel, prêt pour des calculs parallèles.

Création et manipulation des tableaux

Les tableaux se créent à partir de données existantes ou générées.

Méthodes théoriques principales :

  • Zéros/uns/remplis : Initialise un tableau vide pour des matrices de poids en ML.
  • Arange/linspace : Séries régulières, comme des points d'échantillonnage pour un graphique sinusoïdal (arange : pas entier ; linspace : points égaux).
  • De listes : Conversion directe, mais attention à l'homogénéisation forcée.

Manipulation :
  • Redimensionner (reshape) : Change la forme sans copier les données (ex. : vecteur 1D → matrice 2D).
  • Joindre (concatenate/stack) : Combine tableaux ; stack ajoute une dimension (vstack pour vertical).

Cas d'usage : Dans une simulation météo, linspace génère 100 points de température de 0 à 40°C, reshape les organise en grille 10x10.

Opérations vectorisées et broadcasting

Le cœur de NumPy : vectorisation pour éviter les boucles lentes.

Au lieu de boucler sur des éléments, appliquez une opération à tout le tableau en une instruction. Avantage : 100x plus rapide via BLAS/LAPACK (librairies C optimisées).

Broadcasting : Extension automatique des formes. Règle d'or : dimensions compatibles (1 ou égales). Exemple : Ajouter un scalaire à un vecteur étend le scalaire ; matrice (3,4) + vecteur (3,) agit ligne par ligne.

Fonctions universelles (ufuncs) : sin, exp, sqrt – appliquées élément par élément, supportent le broadcasting.

Étude de cas : Calcul de distances euclidiennes entre 1000 points et un centre. Sans vectorisation : boucle imbriquée (O(n²)). Avec : produit scalaire broadcasting en O(n).

Indexation, slicing et masques booléens

Accès sélectif comme en Python, mais optimisé.

  • Indexation basique : [i,j] pour élément ; slicing [start:stop:step] pour sous-tableaux (vues, pas copies !).
  • Fancy indexing : Listes d'indices ou tableaux booléens pour sélection avancée.
  • Masques : Tableau booléen filtre les éléments (ex. : températures > 30°C).
Piège : Slicing crée une vue (référence partagée) ; modification impacte l'original. Utilisez .copy() pour duplicata.

Exemple concret : Dataset de ventes (1000 lignes). Masque booléen 'ventes > moyenne' sélectionne les top performers sans boucle, puis slicing sur colonnes spécifiques extrait prix/unité.

Fonctions d'agrégation et statistiques

Résumez des datasets massifs en un appel.

  • Sum/mean/std : Somme, moyenne, écart-type ; axis=0 pour colonnes.
  • Min/max/argmin : Valeurs et positions extrêmes.
  • Corrélation (corrcoef) : Mesure linéaire entre variables.
Avantage : Out-of-core implicite pour gros données via chunking.

Cas : Analyse financière. Sur 10 ans de rendements (axe=0 : années), cumsum calcule gains cumulés ; std(axis=0) volatilité par actif. Résultat : Matrice de risques en une opération.

Bonnes pratiques

  • Choisissez le dtype précis : int8 pour pixels images (économise 75% mémoire) ; évitez object pour performances.
  • Préférez les vues aux copies : Slicing gratuit, mais .copy() quand nécessaire pour éviter bugs de modification.
  • Utilisez toujours l'axis explicite : Évitez les surprises sur matrices (axis=0 colonnes, 1 lignes).
  • Vectorisez tout : Mesurez le speedup ; si <10x, revoyez votre boucle.
  • Profilez la mémoire : .nbytes pour anticiper les OutOfMemory sur datasets >1GB.

Erreurs courantes à éviter

  • Confusion vue vs copie : Modifier un slice altère l'original ; testez avec print(id(tableau)) == id(slice).
  • Broadcasting raté : Formes incompatibles (ex. (3,4) + (4,3)) → erreur ; alignez avec reshape(-1).
  • Dtype par défaut inadapté : float64 gaspille sur entiers ; spécifiez explicitement.
  • Boucles Python inutiles : Perdez 100x vitesse ; forcez la vectorisation même pour n<1000.

Pour aller plus loin