Idée
Une grille rectangulaire de nombres rangés en mémoire d'un seul tenant, avec une forme — un nombre de lignes, de colonnes, voire de profondeurs.
Outil
Comme une matrice $M \in \mathcal{M}_{n,p}(\mathbb{R})$ vue en sup, ou un tenseur d'ordre 3 si l'on superpose des matrices.
Formule
Un tableau Numpy (np.array) est une grille de nombres rangés dans des cases, exactement comme un vecteur, une matrice, ou un tenseur d'algèbre linéaire — sauf que Numpy connaît la forme de cette grille (.shape) et sait faire dessus des opérations en bloc, sans boucle Python. Un vecteur de 3 nombres a .shape == (3,), une matrice 3×2 a .shape == (3, 2), un tenseur de feuilles empilées a .shape == (2, 3, 4). La raison pour laquelle on en a besoin en IA : un dataset d'images, c'est une matrice de pixels ; un batch de 100 plantes à 2 mesures, c'est un tableau (100, 2) ; les poids d'un neurone, c'est un vecteur. Tout l'apprentissage se traduit en additions, multiplications et produits scalaires sur ces grilles. Numpy fait tourner ces opérations en C par-dessous, donc elles sont 100 fois plus rapides qu'une boucle Python équivalente.
Piège
Numpy expose deux classes : ndarray (le standard, ce que le notebook utilise) et matrix (déprécié depuis 2017). Sur matrix, * fait le produit matriciel — l'inverse de ndarray. Coller du vieux code utilisant np.matrix dans un notebook moderne casse silencieusement la sémantique de *. Toujours utiliser np.array/ndarray.