Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Diffusion | Math avec NumPy
Numpy Ultime
course content

Contenu du cours

Numpy Ultime

Numpy Ultime

1. Bases de NumPy
2. Indexation et Découpage
3. Fonctions NumPy Couramment Utilisées
4. Math avec NumPy

book
Diffusion

Avant de plonger dans les opérations mathématiques avec NumPy, il est important de comprendre un concept clé — broadcasting.

Lorsque NumPy travaille avec deux tableaux, il vérifie leurs formes pour la compatibilité afin de déterminer s'ils peuvent être diffusés ensemble.

Remarque

Si deux tableaux ont déjà la même forme, le broadcasting n'est pas nécessaire.

Même Nombre de Dimensions

Supposons que nous ayons deux tableaux pour lesquels nous voulons effectuer une addition, avec les formes suivantes : (2, 3) et (1, 3). NumPy compare les formes des deux tableaux en commençant par la dimension la plus à droite et en se déplaçant vers la gauche. C'est-à-dire qu'il compare d'abord 3 et 3, puis 2 et 1.

Deux dimensions sont considérées comme compatibles si elles sont égales ou si l'une d'elles est 1 :

  • Pour les dimensions 3 et 3, elles sont compatibles car elles sont égales;
  • Pour les dimensions 2 et 1, elles sont compatibles car l'une d'elles est 1.

Puisque toutes les dimensions sont compatibles, les formes sont considérées comme compatibles. Par conséquent, les tableaux peuvent être diffusés, ce qui entraîne une opération d'addition standard entre matrices de la même forme, qui est effectuée élément par élément.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Remarque

array_1 est créé comme un tableau 2D contenant uniquement une ligne, c'est pourquoi sa forme est (1, 3).

Mais que se passerait-il si nous le créions comme un tableau 1D avec une forme de (3,) ?

Différent Nombre de Dimensions

Lorsqu'un tableau a moins de dimensions que l'autre, les dimensions manquantes sont considérées comme ayant une taille de 1. Par exemple, considérons deux tableaux avec des formes (2, 3) et (3,). Ici, 3 = 3, et la dimension gauche manquante est considérée comme étant 1, donc la forme (3,) devient (1, 3). Étant donné que les formes (2, 3) et (1, 3) sont compatibles, ces deux tableaux peuvent être diffusés.

123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
copy

Diffusion des scalaires

En plus des opérations mathématiques avec des tableaux, nous pouvons également effectuer des opérations similaires entre un tableau et un scalaire (nombre) grâce à la diffusion. Dans ce cas, le tableau peut avoir n'importe quelle forme, car un scalaire n'a essentiellement pas de forme, et toutes ses dimensions sont considérées comme étant 1. Par conséquent, les formes sont toujours compatibles.

123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
copy

Formes incompatibles

Considérons également un exemple de formes incompatibles, où une opération arithmétique ne peut pas être effectuée car le broadcasting n'est pas possible :

Nous avons un tableau 2x3 et un tableau 1D de longueur 2, c'est-à-dire une forme de (2,). La dimension manquante est considérée comme étant 1, donc les formes deviennent (2, 3) et (1, 2).

En allant de gauche à droite : 3 != 2, donc nous avons immédiatement des dimensions incompatibles, et donc des formes incompatibles. Si nous essayons d'exécuter le code, nous obtiendrons une erreur :

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
copy
Sélectionnez les tableaux avec des formes compatibles :

Sélectionnez les tableaux avec des formes compatibles :

Sélectionnez quelques réponses correctes

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 1
We're sorry to hear that something went wrong. What happened?
some-alt