Comment additionner / sommer deux ou plusieurs matrices en python ?

Daidalos November 19, 2019


Exemples de comment additionner (sommer) deux ou plusieurs matrices en python:

Additionner deux matrices de même taille

Le cas le plus simple est si deux matrices A et B ont les mêmes dimensions. Soit par exemple la matrice A suivante:

>>> import numpy as np
>>> A = np.array(([3,1],[6,4]))
>>> A
array([[3, 1],
       [6, 4]])

\begin{equation}
A = \left( \begin{array}{ccc}
3 & 1 \\
6 & 4
\end{array}\right)
\end{equation}

et la matrice B:

>>> B = np.array(([1,8],[4,2]))
>>> B
array([[1, 8],
       [4, 2]])

\begin{equation}
B = \left( \begin{array}{ccc}
1 & 8 \\
4 & 2
\end{array}\right)
\end{equation}

Ces deux matrices ont les mêmes dimensions:

>>> A.shape
(2, 2)
>>> B.shape
(2, 2)
>>> A.shape == B.shape
True

Pour additionner les matrices A et B on peut alors utiliser l'opérateur +:

>>> R = A + B
>>> R
array([[ 4,  9],
       [10,  6]])
>>>

\begin{equation}
R = A + B =
\left( \begin{array}{ccc}
3 & 1 \\
6 & 4
\end{array}\right)
+ \left( \begin{array}{ccc}
1 & 8 \\
4 & 2
\end{array}\right)
=
\left( \begin{array}{ccc}
4 & 9 \\
10 & 6
\end{array}\right)
\end{equation}

Additionner plusieurs matrices

On peut aussi utiliser l'opérateur + pour additionner plusieurs matrices en même temps, exemple avec trois matrices A, B et C:

>>> A = np.array(([1,2],[3,4]))
>>> B = np.array(([2,2],[2,2]))
>>> C = np.array(([10,10],[10,10]))
>>> R = A + B + C
>>> R
array([[13, 14],
       [15, 16]])

\begin{equation}
R = A + B + C =
\left( \begin{array}{ccc}
1 & 2 \\
3 & 4
\end{array}\right)
+ \left( \begin{array}{ccc}
2 & 2 \\
2 & 2
\end{array}\right)
+
\left( \begin{array}{ccc}
10 & 10 \\
10 & 10
\end{array}\right)
=
\left( \begin{array}{ccc}
13 & 14 \\
15 & 16
\end{array}\right)
\end{equation}

Additionner deux matrices de tailles différentes

Si les matrices ont des tailles différentes:

>>> A = np.array(([1,2,3],[4,5,6],[7,8,9]))
>>> A
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> B = np.array(([10,20],[30,40]))
>>> B
array([[10, 20],
       [30, 40]])

On ne peut pas additionner A et B (sauf si une des matrices est de dimension (1,1) voir la prochaine section):

>>> A + B
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (3,3) (2,2)

par contre il est possible de sélectionner seulement une partie d'une matrice, exemple:

>>> A[0:2,0:2]+B
array([[11, 22],
       [34, 45]])

Autre exemple:

>>> A[1:3,0:2]+B
array([[14, 25],
       [37, 48]])

Additionner un nombre à tous les éléments d'une matrice

Pour ajouter un nombre à tous les éléments d'une matrice on peut aussi utiliser l'opérateur +:

>>> A = np.array(([3,1],[6,4]))
>>> A
array([[3, 1],
       [6, 4]])
>>> R = A + 100
>>> R
array([[103, 101],
       [106, 104]])
>>>

Marche aussi

>>> A = np.array(([3,1],[6,4]))
>>> B = np.array(([100]))
>>> A + B
array([[103, 101],
       [106, 104]])

Concatenner deux matrices

Note: si l'objectif n'est pas de sommer deux matrices mais de les concatenner on peut par exemple utiliser la fonction concatenate:

>>> A = np.array(([3,1],[6,4]))
>>> A
array([[3, 1],
       [6, 4]])
>>> B = np.array(([1,8],[4,2]))
>>> B
array([[1, 8],
       [4, 2]])
>>> np.concatenate((A,B),axis=0)
array([[3, 1],
       [6, 4],
       [1, 8],
       [4, 2]])
>>> np.concatenate((A,B),axis=1)
array([[3, 1, 1, 8],
       [6, 4, 4, 2]])

Licence


Google Ads


Activity


Google Ads