Truc informatique

Vectoriser avec numpy

Tu veux appliquer le même calcul à toute une liste de nombres ? Le réflexe débutant, c'est une boucle. Le réflexe scientifique, c'est numpy : tu écris le calcul une seule fois, sur tout le tableau d'un coup. Plus court, plus lisible, et beaucoup plus rapide.

La même idée, deux façons

Imagine une liste de mesures, et tu veux toutes les doubler. Avec une liste Python ordinaire, tu écris une boucle qui traite les nombres un par un. Avec un tableau numpy, tu écris simplement tableau * 2 : numpy s'occupe de tout le reste.

On appelle ça vectoriser : faire d'un seul geste ce que la boucle ferait élément par élément.

Compare en direct

Choisis un calcul à appliquer à la liste nombres = [3, 8, 1, 6, 4] et regarde les deux versions.

Avec une liste : la boucle


          

Avec numpy : d'un coup


          

Pourquoi vectoriser, vraiment

Ce que numpy fait sur tout le tableau

Tu écrisEffet sur le tableau
tableau + 10Ajoute 10 à chaque valeur
tableau * 2Double chaque valeur
tableau ** 2Met chaque valeur au carré
tableau > 5Donne un tableau de Vrai/Faux, valeur par valeur
np.sqrt(tableau)Racine carrée de chaque valeur
np.mean(tableau)La moyenne de tout le tableau (un seul nombre)
np.sum(tableau)La somme de toutes les valeurs

Pour démarrer : import numpy as np puis tableau = np.array([3, 8, 1, 6, 4]). Les colonnes de pandas (tes fichiers CSV) sont des tableaux numpy déguisés : tout ceci marche aussi sur elles.

Le piège qui surprend tout le monde

Une liste Python et un tableau numpy ne réagissent pas pareil au * 2 :

# Une liste ordinaire : * 2 la RÉPÈTE
[3, 8, 1] * 2            # → [3, 8, 1, 3, 8, 1]

# Un tableau numpy : * 2 DOUBLE les valeurs
np.array([3, 8, 1]) * 2  # → [6, 16, 2]

⚠️ À retenir

Si ton * 2 rallonge la liste au lieu de doubler les nombres, c'est que tu travailles sur une liste, pas sur un tableau numpy. Transforme-la d'abord avec np.array(...).