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

bookDiffusion

Avant d'aborder les opérations mathématiques dans NumPy, il est essentiel de comprendre un concept clé : le broadcasting.

Note
Définition

Le broadcasting est une méthode permettant d'aligner les formes des tableaux afin d'effectuer des opérations arithmétiques sans avoir à les remodeler manuellement. En résumé, le broadcasting ajuste automatiquement les formes des tableaux.

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

Note
Remarque

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

Même nombre de dimensions

Supposons que nous ayons deux tableaux pour lesquels nous souhaitons 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. Autrement dit, 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 aboutit à une opération d'addition standard entre matrices de même forme, réalisé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
Note
Remarque

array_2 est créé comme un tableau 2D contenant uniquement une seule ligne, ce qui explique 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,) ?

Nombre de dimensions différent

Lorsqu'un tableau possède moins de dimensions qu'un autre, les dimensions manquantes sont considérées comme ayant une taille de 1. Par exemple, considérons deux tableaux de 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). Puisque 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, il est également possible d'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 (2,). La dimension manquante est considérée comme 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
question mark

Sélectionnez tous les tableaux avec des formes compatibles :

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 1

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain more about how broadcasting works with higher-dimensional arrays?

What kind of error message do you get when shapes are incompatible?

Can you give more real-world examples where broadcasting is useful?

Awesome!

Completion rate improved to 3.7

bookDiffusion

Glissez pour afficher le menu

Avant d'aborder les opérations mathématiques dans NumPy, il est essentiel de comprendre un concept clé : le broadcasting.

Note
Définition

Le broadcasting est une méthode permettant d'aligner les formes des tableaux afin d'effectuer des opérations arithmétiques sans avoir à les remodeler manuellement. En résumé, le broadcasting ajuste automatiquement les formes des tableaux.

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

Note
Remarque

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

Même nombre de dimensions

Supposons que nous ayons deux tableaux pour lesquels nous souhaitons 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. Autrement dit, 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 aboutit à une opération d'addition standard entre matrices de même forme, réalisé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
Note
Remarque

array_2 est créé comme un tableau 2D contenant uniquement une seule ligne, ce qui explique 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,) ?

Nombre de dimensions différent

Lorsqu'un tableau possède moins de dimensions qu'un autre, les dimensions manquantes sont considérées comme ayant une taille de 1. Par exemple, considérons deux tableaux de 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). Puisque 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, il est également possible d'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 (2,). La dimension manquante est considérée comme 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
question mark

Sélectionnez tous les tableaux avec des formes compatibles :

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 1
some-alt