Tutoriel Numpy - Opérations mathématiques NumPy et diffusion

Jinku Hu 30 janvier 2023
  1. Opération arithmétique NumPy
  2. Diffusion de NumPy
Tutoriel Numpy - Opérations mathématiques NumPy et diffusion

Dans ce chapitre, nous aborderons les opérations en NumPy, comme les opérations arithmétiques de base et les opérations matricielles.

Commençons par les opérations arithmétiques de base.

Opération arithmétique NumPy

L’addition, la soustraction, la multiplication et la division sont les opérations arithmétiques les plus élémentaires dans NumPy. Elles sont similaires aux opérations arithmétiques normales entre les nombres.

import numpy as np

arrayA = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arrayB = arrayA.T
# array([[1, 2, 3],
#       [4, 5, 6],
#       [7, 8, 9]])

arrayB = arrayA.T
# array([[1, 4, 7],
#       [2, 5, 8],
#       [3, 6, 9]])

arrayA + arrayB
# array([[ 2,  6, 10],
#       [ 6, 10, 14],
#       [10, 14, 18]])

arrayA - arrayB
# array([[ 0, -2, -4],
#       [ 2,  0, -2],
#       [ 4,  2,  0]])

arrayA * arrayB
# array([[ 1,  8, 21],
#       [ 8, 25, 48],
#       [21, 48, 81]])

arrayA / arrayB
# array([[1.        , 0.5       , 0.42857143],
#       [2.        , 1.        , 0.75      ],
#       [2.33333333, 1.33333333, 1.        ]])

Il faut noter que l’opération de multiplication de matrice - *, multiplie les éléments à la même position sur les deux tableaux pour obtenir l’élément à la même position du tableau de résultat. Ce n’est pas le produit des points de deux tableaux donnés qui doit être calculé avec la méthode np.dot.

np.dot(arrayA, arrayB)
# array([[ 14,  32,  50],
#       [ 32,  77, 122],
#       [ 50, 122, 194]])

Diffusion de NumPy

Deux tableaux doivent avoir la même forme dans l’opération mathématique de tableau. Mais NumPy introduit le concept de diffusion pour remplir automatiquement le tableau si possible lorsque deux tableaux n’ont pas la même forme.

Laissez-moi expliquer ce concept avec des exemples,

import numpy as np

arrayA = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arrayA + 1
# array([[ 2,  3,  4],
#       [ 5,  6,  7],
#       [ 8,  9, 10]])

Ici, 1 est ajouté à tous les éléments de arrayA, ou en d’autres termes, 1 est diffusé de la forme (1, 1) à la même forme de arrayA - (3, 3) pour rendre possible l’opération d’ajout de tableau.

L’opération réelle est la suivante,

arrayA + np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])

La diffusion en NumPy pourrait également être utilisée dans les scénarios ci-dessous,

Deux tableaux ont la même longueur dans une dimension, et un tableau a la même longueur que 1 dans l’autre dimension

Commençons par un exemple,

arrayC = np.array([10, 11, 12])
arrayA + arrayC
# array([[11, 13, 15],
#       [14, 16, 18],
#       [17, 19, 21]])

La forme de arryA est (3, 3) et la forme de arrayC est (3, 1). Il répond aux critères de dimensions des tableaux, et les données sur une seule ligne dans arrayC seront diffusées sur trois lignes pour correspondre à la forme de arrayA.

Il est également applicable si deux tableaux ont la même longueur de ligne.

arrayD = np.array([[10], [11], [12]])
# array([[10],
#       [11],
#       [12]])
arrayA + arrayD
# array([[11, 12, 13],
#       [15, 16, 17],
#       [19, 20, 21]])
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook