NumPy est la bibliothèque de référence pour manipuler des tableaux numériques en Python. Son objet central, ndarray, permet de travailler avec des vecteurs, matrices et tableaux multidimensionnels de façon beaucoup plus efficace et expressive qu’avec des listes classiques.
Le point le plus important à comprendre n’est pas une fonction particulière. C’est le trio shape, axes et dimensions. Une fois ces notions claires, reshape, sum, mean, concatenate, where, pad ou le broadcasting deviennent beaucoup plus faciles à utiliser.
La réponse courte
Un tableau NumPy est un bloc de données homogènes avec une forme.
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
])
print(a.shape)
print(a.ndim)
print(a.dtype)
Résultat :
(2, 3)
2
int64
Ici :
shapevaut(2, 3): deux lignes, trois colonnes ;ndimvaut2: le tableau a deux dimensions ;dtypedécrit le type des valeurs.
Pourquoi NumPy est différent d’une liste Python
Une liste Python peut contenir des objets très différents. Un tableau NumPy est conçu pour contenir des valeurs de même type, stockées de manière compacte.
Cela permet :
- des opérations vectorisées ;
- moins de boucles Python explicites ;
- une meilleure performance sur les calculs numériques ;
- une intégration avec Pandas, SciPy, scikit-learn et beaucoup d’outils data.
import numpy as np
valeurs = np.array([1, 2, 3, 4])
print(valeurs * 10)
print(valeurs + 1)
Avec une liste Python, valeurs * 10 répéterait la liste. Avec NumPy, l’opération est appliquée élément par élément.
Comprendre shape
shape donne la taille du tableau dans chaque dimension.
import numpy as np
vecteur = np.array([1, 2, 3])
matrice = np.array([[1, 2, 3], [4, 5, 6]])
cube = np.zeros((2, 3, 4))
print(vecteur.shape)
print(matrice.shape)
print(cube.shape)
Résultat :
(3,)
(2, 3)
(2, 3, 4)
Un vecteur de forme (3,) n’est pas la même chose qu’une matrice colonne de forme (3, 1) ou qu’une matrice ligne de forme (1, 3).
Comprendre les axes
Les axes indiquent la direction dans laquelle une opération s’applique.
Pour une matrice de forme (2, 3) :
axis=0parcourt les lignes et agrège par colonne ;axis=1parcourt les colonnes et agrège par ligne.
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
])
print(a.sum(axis=0))
print(a.sum(axis=1))
Résultat :
[5 7 9]
[ 6 15]
Cette notion est l’une des sources d’erreurs les plus fréquentes chez les débutants NumPy.
Reshape : changer la forme sans changer les données
reshape change la forme logique d’un tableau, tant que le nombre total d’éléments reste compatible.
import numpy as np
a = np.arange(12)
b = a.reshape(3, 4)
print(b)
Le tableau contient toujours douze valeurs. Elles sont simplement vues comme trois lignes et quatre colonnes.
Si le nombre d’éléments ne correspond pas, NumPy lève une erreur.
import numpy as np
a = np.arange(10)
try:
a.reshape(3, 4)
except ValueError as erreur:
print("forme incompatible")
Broadcasting : calculer avec des formes compatibles
Le broadcasting permet à NumPy de combiner des tableaux de formes différentes quand elles sont compatibles.
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 6],
])
b = np.array([10, 20, 30])
print(a + b)
NumPy ajoute le vecteur b à chaque ligne de a.
Le broadcasting est puissant, mais il peut aussi masquer une erreur de forme. Si un résultat semble étrange, vérifiez toujours shape.
dtype : le type des valeurs
dtype influence la mémoire, la précision et certains résultats.
import numpy as np
entiers = np.array([1, 2, 3])
flottants = np.array([1.0, 2.0, 3.0])
print(entiers.dtype)
print(flottants.dtype)
Dans les calculs scientifiques, financiers ou de machine learning, le choix entre entiers, flottants 32 bits et flottants 64 bits peut compter.
Fonctions NumPy à apprendre en premier
| Besoin | Fonction utile |
|---|---|
| Créer une séquence | np.arange, np.linspace |
| Changer la forme | reshape |
| Agréger | sum, mean, min, max |
| Filtrer | where, masques booléens |
| Assembler | concatenate, stack, hstack, vstack |
| Ajouter du padding | np.pad |
| Créer des zéros ou des uns | zeros, ones |
Pour approfondir le padding, voir np.pad / numpy.pad en Python.
Erreurs fréquentes
La première erreur est de confondre liste de listes et tableau NumPy. Beaucoup d’opérations ne se comportent pas de la même façon.
La deuxième erreur est d’oublier axis. Si le résultat a la bonne valeur mais pas la bonne forme, regardez l’axe.
La troisième erreur est de modifier une vue en pensant modifier une copie. Certaines opérations NumPy retournent une vue sur les mêmes données.
La quatrième erreur est d’utiliser des boucles Python quand une opération vectorisée suffit.
La cinquième erreur est de créer des tableaux avec des types mélangés. NumPy doit choisir un dtype, parfois moins adapté que prévu.
Où continuer
Ce guide sert de point d’entrée au cluster NumPy.
La suite logique :
numpy.reshape: changer la forme d’un tableau ;numpy.concatenate,stack,hstacketvstack;numpy.whereet les masques booléens ;numpy.linspaceetarange;- Pandas pour les tableaux avec colonnes nommées.
À lire aussi :
- Algorithmes Python : tous les guides pour apprendre pas à pas
- Complexité algorithmique en Python
- Méthode de Monte Carlo en Python
La règle à retenir : avant d’utiliser une fonction NumPy, affichez shape, ndim et dtype. Ces trois informations expliquent la plupart des comportements.

