NumPy Tutorials

NumPy : Maîtriser les Opérations Arithmétiques et le Broadcasting

Spread the love

NumPy est une bibliothèque fondamentale pour le calcul numérique en Python, offrant des outils puissants pour la manipulation efficace des tableaux. Ce tutoriel explore deux concepts fondamentaux : les opérations arithmétiques et la diffusion (broadcasting), essentiels pour écrire du code numérique concis et performant.

Table des matières

  1. Opérations arithmétiques
  2. Diffusion (Broadcasting)

1. Opérations arithmétiques

NumPy étend de manière transparente les opérateurs arithmétiques de Python (+, -, *, /, //, %, **) pour qu’ils fonctionnent directement sur les tableaux NumPy. Ces opérations sont élément par élément, ce qui signifie qu’elles s’appliquent aux éléments correspondants des tableaux. Illustrons avec des exemples :


import numpy as np

arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

print("Addition:", arr1 + arr2)       # Résultat : [ 6  8 10 12]
print("Soustraction:", arr1 - arr2)    # Résultat : [-4 -4 -4 -4]
print("Multiplication:", arr1 * arr2) # Résultat : [ 5 12 21 32]
print("Division:", arr1 / arr2)      # Résultat : [0.2        0.33333333 0.42857143 0.5       ]
print("Division entière:", arr1 // arr2) # Résultat : [0 0 0 0]
print("Modulo:", arr1 % arr2)        # Résultat : [1 2 3 4]
print("Exponentiation:", arr1 ** arr2) # Résultat : [    1    64  2187 65536]

Cette opération élément par élément s’étend sans effort aux tableaux multidimensionnels.

2. Diffusion (Broadcasting)

La diffusion (broadcasting) est une fonctionnalité puissante de NumPy qui permet des opérations entre des tableaux de formes différentes, sous certaines conditions. Elle élimine le besoin de boucles explicites, améliorant ainsi considérablement les performances. Les règles principales de la diffusion sont :

  1. Règle 1 : Si les tableaux ont des dimensions inégales, la forme du plus petit tableau est complétée par des 1 en tête jusqu’à ce qu’elle corresponde à la dimensionalité du plus grand tableau.
  2. Règle 2 : Si un tableau a une dimension de taille 1 et que l’autre tableau a une dimension supérieure à 1, la dimension de taille 1 est étendue pour correspondre à la dimension la plus grande.
  3. Règle 3 : Si les tableaux ont des dimensions différentes et qu’aucune n’est de taille 1, une ValueError est levée.

Illustrons la diffusion :


import numpy as np

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])

result = arr1 + arr2  # Diffusion en action

print(result)
# Résultat :
# [[11 22 33]
# [14 25 36]]

Ici, arr2 (forme (3,)) est diffusé pour correspondre à la forme de arr1 (2, 3). Chaque ligne de arr1 est additionnée à arr2, évitant ainsi les boucles explicites. La maîtrise de la diffusion est cruciale pour écrire du code NumPy efficace et lisible. Tenez toujours compte des formes des tableaux pour éviter des résultats ou des erreurs inattendus.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *