Quelques exemples sur comment effectuer directement des opérations mathématiques sur les éléments d'une matrice en python ("element-wise operations"):
Table des matières
- Additionner un nombre à tous les éléments d'une matrice
- Soustraire un nombre à tous les éléments d'une matrice
- Multiplier les éléments d'une matrice par une constante
- Multiplier les éléments d'une matrice par les éléments d'une autre matrice
- Élever au carré les éléments d'une matrice
- Racine carré sur les éléments d'une matrice
- Créer une fonction qui modifie les éléments d'une matrice
- Produit matriciel sur les éléments d'une matrice
- Multiplier les éléments d'une ligne par les éléments d'une autre matrice
- Multiplier les éléments d'une colonne par les éléments d'une autre matrice
- Références
Additionner un nombre à tous les éléments d'une matrice
Soit la matrice A suivante:
\begin{equation}
A = \left( \begin{array}{ccc}
0 & 1 & 2 \\
3 & 4 & 5 \\
6 & 7 & 8
\end{array}\right)
\end{equation}
>>> import numpy as np>>> A = np.arange(9).reshape(3,3)>>> Aarray([[0, 1, 2],[3, 4, 5],[6, 7, 8]])
pour ajouter le même nombre à tous les éléments d'une matrice on peut faire comme ceci
>>> A + 1array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
ou
>>> B = np.ones(9).reshape(3,3)>>> Barray([[ 1., 1., 1.],[ 1., 1., 1.],[ 1., 1., 1.]])>>> A + Barray([[ 1., 2., 3.],[ 4., 5., 6.],[ 7., 8., 9.]])
Autre exemple:
>>> B = np.arange(10,19).reshape(3,3)>>> Barray([[10, 11, 12],[13, 14, 15],[16, 17, 18]])>>> A + Barray([[10, 12, 14],[16, 18, 20],[22, 24, 26]])
Soustraire un nombre à tous les éléments d'une matrice
Même chose pour la soustraction:
>>> import numpy as np>>> A = np.arange(9).reshape(3,3)
pour soustraire le même nombre à tous les éléments d'une matrice on peut faire comme ceci
>>> A - 1array([[-1, 0, 1],[ 2, 3, 4],[ 5, 6, 7]])
ou
>>> B = np.ones(9).reshape(3,3)>>> A - Barray([[-1., 0., 1.],[ 2., 3., 4.],[ 5., 6., 7.]])
Autre exemple
>>> B = np.arange(10,19).reshape(3,3)>>> Barray([[10, 11, 12],[13, 14, 15],[16, 17, 18]])>>> A - Barray([[-10, -10, -10],[-10, -10, -10],[-10, -10, -10]])
Multiplier les éléments d'une matrice par une constante
Exemple de comment multiplier les éléments d'une matrice par une constante
>>> A = np.arange(9).reshape(3,3)>>> Aarray([[0, 1, 2],[3, 4, 5],[6, 7, 8]])>>> A * 2array([[ 0, 2, 4],[ 6, 8, 10],[12, 14, 16]])
Multiplier les éléments d'une matrice par les éléments d'une autre matrice
>>> A = np.arange(9).reshape(3,3)>>> Aarray([[0, 1, 2],[3, 4, 5],[6, 7, 8]])>>> B = np.arange(10,19).reshape(3,3)>>> Barray([[10, 11, 12],[13, 14, 15],[16, 17, 18]])>>> A * Barray([[ 0, 11, 24],[ 39, 56, 75],[ 96, 119, 144]])
Élever au carré les éléments d'une matrice
>>> A = np.arange(9).reshape(3,3)>>> Aarray([[0, 1, 2],[3, 4, 5],[6, 7, 8]])>>> A ** 2array([[ 0, 1, 4],[ 9, 16, 25],[36, 49, 64]])>>> np.sqrt(A**2)array([[ 0., 1., 2.],[ 3., 4., 5.],[ 6., 7., 8.]])
Racine carré sur les éléments d'une matrice
Pour obtenir appliquer une racine carré sur les éléments d'une matrice on peut utiliser la fonction numpy np.sqrt()
>>> A = np.arange(9).reshape(3,3)>>> Aarray([[0, 1, 2],[3, 4, 5],[6, 7, 8]])>>> A ** 2array([[ 0, 1, 4],[ 9, 16, 25],[36, 49, 64]])>>> np.sqrt(A**2)array([[ 0., 1., 2.],[ 3., 4., 5.],[ 6., 7., 8.]])
Créer une fonction qui modifie les éléments d'une matrice
>>> A = np.arange(9).reshape(3,3)>>> Aarray([[0, 1, 2],[3, 4, 5],[6, 7, 8]])>>> def my_custom_function(x):... return x**2 + 1...>>> my_custom_function(A)array([[ 1, 2, 5],[10, 17, 26],[37, 50, 65]])
Note: si on veut utiliser des fonctions comme le cosinus, sinus, exp, etc il ne faut pas utiliser le module python math mais utiliser numpy (numpy Mathematical functions):
>>> import math>>> def my_custom_function(x):... return math.sin(x)...>>> my_custom_function(A)Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 2, in my_custom_functionTypeError: only length-1 arrays can be converted to Python scalars
il suffit de remplacer math.sin(x) par np.sin(x) comme dans cet exemple
>>> def my_custom_function(x):... return np.sin(x)...>>> my_custom_function(A)array([[ 0. , 0.84147098, 0.90929743],[ 0.14112001, -0.7568025 , -0.95892427],[-0.2794155 , 0.6569866 , 0.98935825]])
On peut aussi obtenir le même résultat directement:
>>> np.sin(A)array([[ 0. , 0.84147098, 0.90929743],[ 0.14112001, -0.7568025 , -0.95892427],[-0.2794155 , 0.6569866 , 0.98935825]])
Produit matriciel sur les éléments d'une matrice
>>> import numpy as np>>> A = np.arange(4).reshape(2,2)>>> A = np.array([A[:],A[:]*2,A[:]*3])>>> Aarray([[[0, 1],[2, 3]],[[0, 2],[4, 6]],[[0, 3],[6, 9]]])>>> B = np.array((4,6))>>> Barray([4, 6])>>> B @ Aarray([[12, 22],[24, 44],[36, 66]])
Autre exemple
>>> A = np.arange(3).reshape(3,1)>>> Aarray([[0],[1],[2]])>>> B = np.arange(3).reshape(1,3)>>> Barray([[0, 1, 2]])>>> B @ Aarray([[5]])
Multiplier les éléments d'une ligne par les éléments d'une autre matrice
>>> A = np.arange(9).reshape(3,3)>>> Aarray([[0, 1, 2],[3, 4, 5],[6, 7, 8]])>>> B = np.arange(3)>>> Barray([0, 1, 2])>>> np.multiply(A,B)array([[ 0, 1, 4],[ 0, 4, 10],[ 0, 7, 16]])
Multiplier les éléments d'une colonne par les éléments d'une autre matrice
>>> C = B[:,np.newaxis]>>> Carray([[0],[1],[2]])>>> np.multiply(A,C)array([[ 0, 0, 0],[ 3, 4, 5],[12, 14, 16]])
Références
| Liens | Site |
|---|---|
| Introduction to Python Operator | data-flair.training |
| numpy.multiply | stackoverflow |
| Elementwise multiplication of NumPy arrays of matrices | stackoverflow |
| How to get element-wise matrix multiplication (Hadamard product) in numpy? | stackoverflow |
| numpy Mathematical functions | docs.scipy.org |
| What is the purpose of meshgrid in Python / NumPy? | stackoverflow |
| How to merge mesh grid points from two rectangles in python? | stackoverflow |
