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]])
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