Les arrays NumPy peuvent être redimensionnés (reshape) ou découpés (slicing) sans copier les données — très efficace.
a = np.arange(12) # shape (12,)
b = a.reshape(3, 4) # shape (3, 4) → 3 lignes × 4 colonnes
c = a.reshape(2, 2, 3) # shape (2, 2, 3) → 3D
d = a.reshape(-1, 4) # -1 = "calcule toi-même" → (3, 4)Le produit des dimensions doit être égal au nombre total d'éléments.
reshape(3, 5) sur un array de 12 éléments → erreur.
a.flatten() → retransforme en 1D (renvoie une COPIE)
a.ravel() → retransforme en 1D (renvoie une VUE si possible, plus efficace)a = np.array([10, 20, 30, 40, 50])
a[1:4] → [20 30 40]
a[::2] → [10 30 50]
a[::-1] → inverséSyntaxe : a[lignes, colonnes]
b = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]])b[0] → [1 2 3 4] (ligne 0)
b[0, :] → [1 2 3 4] (équivalent)
b[:, 1] → [2 6 10] (colonne 1)
b[0:2, 1:3] → [[2 3] [6 7]] (sous-matrice)
b[-1, -1] → 12 (dernier élément)b.T → échange lignes et colonnes
np.transpose(b) → équivalentLes slices NumPy partagent la mémoire de l'array d'origine. Modifier la slice modifie l'original :
s = a[1:4]
s[0] = 999
# a est modifié aussi !Pour une vraie copie : a[1:4].copy()
reshape + ravel sont les couteaux suisses des transformations d'arrays. Très utilisés en deep learning pour passer d'images (2D/3D) à des vecteurs (1D).
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →