Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Calcul scientifique
avec Python
Voir le programme détaillé

Opérations vectorisées et ufuncs avec NumPy

Changer la forme des tableaux Broadcasting avec NumPy


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

Introduction

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.

Calculer sur tout un tableau

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)
Une opération vectorisée simple

[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.

Opérations entre deux tableaux

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)
Opérations terme à terme

[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.

Utiliser les fonctions universelles

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))
Utilisation de sqrt

[1. 2. 3. 4.]

Le résultat est un nouveau tableau contenant la racine carrée de chaque valeur.

Arrondir les valeurs

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))
Arrondir toutes les valeurs

[1.2 5.7 9.9]

Comparaisons vectorisées

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])
Production et utilisation d'un masque booléen

[ 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.

Combiner plusieurs conditions

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])
Combinaison de conditions

[12 20]

Choisir conditionnellement avec where

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)
Utilisation de where

['ko' 'ok' 'ok' 'ko']

Cette écriture évite une boucle et rend le traitement très lisible lorsque la logique reste simple.

Changer la forme des tableaux Broadcasting avec NumPy




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation Python
Les fondamentaux
Voir le programme détaillé