Accès rapide :
Introduction
Calculer sur tout un tableau
Opérations entre deux tableaux
Utiliser les fonctions universelles
Arrondir les valeurs
Comparaisons vectorisées
Combiner plusieurs conditions
Choisir conditionnellement avec where
Une des forces de NumPy est de permettre des calculs sur des tableaux complets sans écrire de boucle Python explicite. On parle alors d'opérations vectorisées. Le code est souvent plus court, plus lisible et plus rapide.
Les fonctions universelles, aussi appelées ufuncs, appliquent une fonction élément
par élément sur un tableau NumPy. C'est le cas de fonctions comme sqrt, sin,
exp ou encore round.
Une opération arithmétique appliquée à un tableau est appliquée à chacun de ses éléments.
1 2 3 4 5 |
import numpy as np data = np.array([1, 2, 3, 4]) print(data * 10 + 1) |
[11 21 31 41]
On n'a pas besoin de parcourir le tableau avec une boucle for. NumPy applique directement
le calcul à toutes les valeurs.
Lorsque deux tableaux ont la même forme, les opérations sont réalisées terme à terme.
1 2 3 4 5 6 7 8 |
import numpy as np a = np.array([10, 20, 30]) b = np.array([1, 2, 3]) print(a + b) print(a * b) print(a / b) |
[11 22 33] [10 40 90] [10. 10. 10.]
Le premier élément de a est combiné avec le premier élément de b, puis le
second avec le second, et ainsi de suite.
Les ufuncs sont conçues pour travailler efficacement avec des tableaux NumPy. Voici un exemple avec la racine carrée.
1 2 3 4 5 |
import numpy as np values = np.array([1, 4, 9, 16]) print(np.sqrt(values)) |
[1. 2. 3. 4.]
Le résultat est un nouveau tableau contenant la racine carrée de chaque valeur.
Les ufuncs peuvent être combinées pour construire des traitements simples. On peut par exemple arrondir toutes les valeurs d'un tableau.
1 2 3 4 5 |
import numpy as np values = np.array([1.234, 5.678, 9.876]) print(np.round(values, 1)) |
[1.2 5.7 9.9]
Les comparaisons produisent des tableaux de booléens. Ces tableaux peuvent ensuite être utilisés comme masques pour extraire certaines valeurs.
1 2 3 4 5 6 7 |
import numpy as np values = np.array([12, 5, 28, 30, 7]) mask = values >= 10 print(mask) print(values[mask]) |
[ True False True True False] [12 28 30]
Le masque garde la même forme que le tableau d'origine. Les valeurs True indiquent les
éléments qui seront conservés.
Pour combiner des conditions NumPy, utilisez les opérateurs & et |, avec
des parenthèses autour de chaque comparaison.
1 2 3 4 5 6 |
import numpy as np values = np.array([3, 8, 12, 20, 25]) mask = (values >= 10) & (values <= 20) print(values[mask]) |
[12 20]
La fonction np.where permet de choisir une valeur quand la condition est vraie et une autre
quand elle est fausse.
1 2 3 4 5 6 |
import numpy as np notes = np.array([8, 12, 15, 6]) decisions = np.where(notes >= 10, "ok", "ko") print(decisions) |
['ko' 'ok' 'ok' 'ko']
Cette écriture évite une boucle et rend le traitement très lisible lorsque la logique reste simple.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :