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