Menu
CoddyTech

Aide-mémoire NumPy

Dernière mise à jour

Créer des tableaux

Un tableau contient des valeurs d'un seul type, dans une grille à autant de dimensions que tu veux.

TâcheCode
Importer NumPyimport numpy as np
À partir d'une listenp.array([1, 2, 3])
En 2D à partir de listes imbriquéesnp.array([[1, 2, 3], [4, 5, 6]])
Zéros, uns, une valeur de remplissagenp.zeros((2, 3)), np.ones(4), np.full((2, 2), 7)
Plage avec un pas (fin exclue)np.arange(0, 10, 2) # [0 2 4 6 8]
n points régulièrement espacés (fin incluse)np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1.]
Matrice identiténp.eye(3)
Même forme qu'un autre tableaunp.zeros_like(m), np.ones_like(m)
Choisir le type des élémentsnp.array([1, 2, 3], dtype=np.float32)
Grilles de coordonnéesxx, yy = np.meshgrid(np.arange(3), np.arange(2))

Inspecter un tableau

TâcheCode
Forme : taille de chaque dimensionm.shape # (3, 4)
Nombre de dimensionsm.ndim # 2
Nombre d'élémentsm.size # 12
Type des élémentsm.dtype # int64
Convertir le typem.astype(np.float64)
Longueur de la première dimensionlen(m) # 3
Revenir à une liste Pythonm.tolist()
Afficher moins de décimalesnp.set_printoptions(precision=3, suppress=True)

Indexer et découper

Les tranches sont des vues : elles partagent la mémoire du tableau d'origine. Les masques et les listes d'indices renvoient des copies.

TâcheCode
Premier et dernier élémenta[0], a[-1]
Tranche début:fin (fin exclue)a[1:4] # [20 30 40]
Un élément sur deux, inverséa[::2], a[::-1]
Un élément d'un tableau 2Dm[1, 2] # 6
Une ligne, une colonnem[0], m[:, 1]
Un bloc de lignes et de colonnesm[:2, 1:3]
Éléments qui vérifient une conditiona[a > 25] # [30 40 50]
Combiner des conditionsa[(a > 15) & (a < 45)]
Choisir via une liste de positionsa[[0, 2, 4]]
Positions qui correspondentnp.flatnonzero(a > 25) # [2 3 4]
Choisir élément par élémentnp.where(a > 25, a, 0)
Copier avant de modifier une tranchepart = a[1:3].copy()
Modifier des valeurs avec un masquea[a > 40] = 0

Calcul et broadcasting

Les opérateurs agissent élément par élément. Le broadcasting étire un scalaire, une ligne ou une colonne pour l'adapter à la forme de l'autre tableau.

TâcheCode
Arithmétique élément par élémentx + y, x - y, x * y, x / y, x ** 2
Avec un scalairex * 10
Racine carrée, exponentielle, lognp.sqrt(x), np.exp(x), np.log(x)
Valeur absolue, arrondinp.abs(x - 5), np.round(x / 3, 2)
Limiter les valeurs à un intervallenp.clip(x, 2, 8)
Maximum élément par élémentnp.maximum(x, 3)
Produit scalairex @ y # 37.0
Centrer chaque colonne (broadcast d'une ligne)m - m.mean(axis=0)
Mettre à l'échelle chaque ligne (broadcast d'une colonne)m / m.sum(axis=1, keepdims=True)
Comparer des flottants sans risquenp.isclose(0.1 + 0.2, 0.3) # True, np.allclose(x, y)
Trigonométrie et pinp.sin(np.pi / 2) # 1.0

Agréger selon un axe

axis=0 parcourt les lignes vers le bas et donne un résultat par colonne. axis=1 parcourt les colonnes et donne un résultat par ligne.

TâcheCode
Somme de tous les élémentsm.sum() # 21
Un résultat par colonnem.sum(axis=0) # [5 7 9]
Un résultat par lignem.sum(axis=1) # [ 6 15]
Moyenne et écart-typem.mean(), m.std(), m.mean(axis=0)
Minimum, maximumm.min(), m.max(axis=1)
Position du maximumm.argmax(), m.argmax(axis=1)
Médiane et percentilesnp.median(m), np.percentile(m, [25, 50, 75])
Somme cumuléenp.cumsum(m, axis=1)
Produit de tous les élémentsm.prod() # 720
Au moins un, tous, nombre(m > 4).any(), (m > 0).all(), np.count_nonzero(m > 2)

Remodeler et combiner

Un reshape garde les éléments et change la forme : la taille totale doit donc rester la même.

TâcheCode
Nouvelle formea.reshape(2, 3)
Laisser NumPy calculer une taillea.reshape(3, -1), a.reshape(-1, 1)
Aplatir en 1Dm.ravel(), m.flatten()
Transposerm.T
Ajouter une dimensiona[:, np.newaxis], np.expand_dims(a, axis=0)
Supprimer les dimensions de taille 1np.squeeze(np.ones((1, 3, 1)))
Concaténer selon un axe existantnp.concatenate([a, a])
Empiler des lignes ou des colonnesnp.vstack([m, m]), np.hstack([m, m])
Tableaux 1D en colonnesnp.column_stack([a, a ** 2])
Empiler selon un nouvel axenp.stack([a, a], axis=0) # shape (2, 6)
Découper en morceauxnp.split(a, 3), np.array_split(a, 4)
Répéter ou pavernp.repeat([1, 2], 2) # [1 1 2 2], np.tile([1, 2], 2) # [1 2 1 2]

Trier, chercher et valeurs uniques

TâcheCode
Copie triéenp.sort(a)
Les plus grands d'abordnp.sort(a)[::-1]
Positions qui trieraient le tableaunp.argsort(a)
Les trois plus grandes valeursnp.sort(a)[-3:]
Valeurs uniques et leurs effectifsvalues, counts = np.unique(a, return_counts=True)
Noms NumPy 2 (unique_values peut être non trié)np.unique_values(a), np.unique_counts(a)
Chaque élément est-il dans une liste ?np.isin(a, [1, 9])
Position d'insertion dans un tableau triénp.searchsorted([1, 3, 5, 7], 4) # 2
Opérations ensemblistesnp.intersect1d(a, [1, 2, 10]), np.union1d(a, [10]), np.setdiff1d(a, [1])
Trier les lignes selon une colonnem[m[:, 1].argsort()]

Nombres aléatoires

Crée un seul Generator avec une graine et tire tout depuis lui, pour obtenir les mêmes résultats à chaque exécution.

TâcheCode
Générateur avec grainerng = np.random.default_rng(42)
Flottants dans [0, 1)rng.random(3)
Entiers, borne haute excluerng.integers(1, 7, size=10)
Loi normalerng.normal(loc=0, scale=1, size=(2, 3))
Flottants uniformes dans un intervallerng.uniform(5, 10, size=4)
Tirer dans une listerng.choice(["a", "b", "c"], size=5)
Tirer sans remiserng.choice(10, size=3, replace=False)
Tirer avec des poidsrng.choice(["H", "T"], size=10, p=[0.7, 0.3])
Copie mélangée, mélange sur placerng.permutation(a), rng.shuffle(a)
Tirages binomiaux et de Poissonrng.binomial(10, 0.5, size=5), rng.poisson(3, size=5)

Algèbre linéaire

TâcheCode
Produit matricielA @ A
Résoudre Ax = bnp.linalg.solve(A, b) # [0.8 1.4]
Inverse et déterminantnp.linalg.inv(A), np.linalg.det(A)
Norme d'un vecteurnp.linalg.norm(b)
Valeurs propres et vecteurs propresvalues, vectors = np.linalg.eig(A)
Ajuster une droiteslope, intercept = np.polyfit(x, y, 1)
Produit extérieurnp.outer([1, 2], [3, 4])
Diagonale et tracenp.diag(A), np.trace(A)

Valeurs manquantes et spéciales

np.nan marque un flottant manquant. Tout calcul qui l'implique donne nan : utilise donc les fonctions nan ou un masque.

TâcheCode
Valeur manquantenp.nan
Trouver les valeurs manquantesnp.isnan(v), np.isnan(v).sum()
Supprimer les valeurs manquantesv[~np.isnan(v)]
Remplacer les valeurs manquantes et infiniesnp.nan_to_num(v, nan=0.0, posinf=0.0)
Tester l'infini et les valeurs finiesnp.inf, np.isfinite(v)
Statistiques qui ignorent NaNnp.nanmean(v[:3]) # 2.0, np.nanmax(v)

Enregistrer et charger

TâcheCode
Un tableau, fichier binairenp.save("data.npy", m), m = np.load("data.npy")
Plusieurs tableaux dans un fichiernp.savez("data.npz", x=x, y=y), np.load("data.npz")["x"]
Écrire du texte CSVnp.savetxt("data.csv", m, delimiter=",", fmt="%d")
Lire du texte CSVnp.loadtxt("data.csv", delimiter=",")

NumPy 2 : anciens noms et quoi écrire maintenant

NumPy 2 a supprimé de nombreux alias : le code copié d'anciens tutoriels peut donc échouer avec une AttributeError.

TâcheNumPy 2Ancienne syntaxe
Valeur manquantenp.nannp.NaN
Infininp.infnp.Inf
Type flottant 64 bitsnp.float64np.float_
Aire sous une courbenp.trapezoid(y, x)np.trapz(y, x)
Chaque élément est-il dans un autre tableau ?np.isin(a, b)np.in1d(a, b)
Empiler des lignesnp.vstack([a, a])np.row_stack([a, a])
Produitnp.prod(a)np.product(a)
Nombres aléatoiresrng = np.random.default_rng(0) rng.random(3)np.random.seed(0) np.random.rand(3)

Les appels NumPy sur lesquels repose le code de data science, classés par tâche : créer des tableaux, les inspecter, indexer et découper, faire des calculs élément par élément, agréger selon un axe, remodeler et combiner, trier et chercher, tirer des nombres aléatoires et résoudre des problèmes d'algèbre linéaire. Chaque ligne donne un court extrait à copier-coller, avec une phrase qui explique ce qu'il fait.

Tout est écrit pour NumPy 2, la version utilisée par Coddy, et le dernier tableau liste les noms supprimés par NumPy 2, à côté de ce qu'il faut écrire à la place. La plupart des exemples utilisent a = np.array([3, 1, 4, 1, 5, 9, 2, 6]) et m = np.arange(12).reshape(3, 4). Tu débutes en Python ? Commence par l'aide-mémoire Python et le playground Python, et garde les aide-mémoire pandas, Matplotlib et scikit-learn à portée de main.

FAQ de l'aide-mémoire NumPy

Cet aide-mémoire NumPy est-il gratuit ?
Oui. Cet aide-mémoire NumPy est entièrement gratuit, sans inscription. Ajoute-le à tes favoris ou imprime-le en PDF depuis ton navigateur, et reviens dès que tu as besoin de l'appel exact pour un reshape, une somme selon un axe ou un tirage aléatoire.
Quelle version de NumPy cet aide-mémoire couvre-t-il ?
NumPy 2. Chaque extrait fonctionne avec NumPy 2.4, la version utilisée par Coddy. NumPy 2 a supprimé des alias comme np.NaN, np.float_, np.trapz et np.in1d : le dernier tableau montre donc chacun d'eux à côté de son nom actuel.
Que signifie axis=0 dans NumPy ?
L'axe est la dimension qui est réduite. Dans un tableau 2D, axis=0 parcourt les lignes vers le bas, donc m.sum(axis=0) renvoie un total par colonne. axis=1 parcourt les colonnes et renvoie un total par ligne. Sans axe, la fonction utilise tous les éléments.
Quelle est la différence entre une vue et une copie ?
Une tranche comme a[1:3] est une vue : elle partage la mémoire de a, donc modifier la tranche modifie a. Les masques booléens et les listes d'indices comme a[a > 2] ou a[[0, 2]] renvoient des copies. Appelle .copy() quand tu as besoin d'un tableau indépendant.
Pourquoi utiliser un tableau NumPy plutôt qu'une liste Python ?
Les tableaux stockent un seul type dans un seul bloc de mémoire : les calculs sur un tableau entier tournent donc en code compilé et sont souvent bien plus rapides qu'une boucle Python. a * 2 double chaque élément, alors que [1, 2] * 2 répète la liste. pandas et scikit-learn reposent sur les tableaux NumPy.
Faut-il utiliser np.random.seed ou default_rng ?
Utilise rng = np.random.default_rng(seed) et appelle les méthodes de rng, comme rng.normal() ou rng.integers(). C'est l'API recommandée, avec de meilleurs flux aléatoires et aucun état global caché. np.random.seed et np.random.rand fonctionnent encore, mais c'est l'ancienne interface.
Puis-je exécuter du code NumPy en ligne ?
Oui. Le playground Matplotlib gratuit exécute Python avec NumPy, pandas, Matplotlib et scikit-learn dans ton navigateur : tu peux coller n'importe quel extrait de cet aide-mémoire et le lancer sans rien installer. Le cours Machine Learning de Coddy enseigne NumPy pas à pas, en travaillant sur de vraies données.
Illustration des langages de programmation de Coddy

Apprenez NumPy avec Coddy

COMMENCER