Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Multiplier des matrices

Après cette leçon: Je peux multiplier une matrice par un vecteur et par une autre matrice.

Leçon de 60 min3 commandesLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Qu’est-ce qu’une matrice ?

Une matrice est un tableau de nombres rangés en lignes et en colonnes, et le produit matriciel combine deux tableaux en un seul. Vous saurez multiplier une matrice par un vecteur, puis par une autre matrice.

Deux boutiques vendent trois produits. Pour connaître la recette de chacune, on multiplie le tableau des ventes par les prix.

À la fin de cette leçon

Remarque

Je peux multiplier une matrice par un vecteur et par une autre matrice.

Mots clés

MotCe que ça veut direExemple
Matriceun tableau de nombres en lignes et en colonnes
Ligneune rangée horizontale de la matrice
Colonneune rangée verticale de la matrice
Formele nombre de lignes puis de colonnes(2, 3)
Produit matricielle produit scalaire de chaque ligne avec chaque colonne

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Chaque ligne fait un produit scalaire

La boutique A a vendu 2, 1 et 0 exemplaires de trois produits. La boutique B en a vendu 1, 3 et 2. Ces ventes forment une matrice de deux lignes et trois colonnes.

Les prix sont 3, 2 et 4 €. Pour chaque boutique, on fait le produit scalaire de sa ligne avec le vecteur des prix. Le résultat est un vecteur : une recette par boutique.

Exemple travaillé : les recettes

BoutiqueCalculRecette en euros
A (ligne 2, 1, 0)2 × 3 + 1 × 2 + 0 × 48
B (ligne 1, 3, 2)1 × 3 + 3 × 2 + 2 × 417

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Les recettes en Python

Code: python
# Ventes de deux boutiques : une ligne par boutique, une colonne par produit.
ventes = [[2, 1, 0], [1, 3, 2]]
# Prix en euros des trois produits.
prix = [3, 2, 4]
for ligne in ventes:
    recette = 0
    for j in range(len(prix)):
        recette = recette + ligne[j] * prix[j]
    print("recette :", recette, "euros")
# Remplacez le 0 de la première ligne par 5, puis relancez.
# Quelle recette change, et de combien ?

Une matrice fois un vecteur avec NumPy

Commande
docker exec jupyter python3 -c "import numpy as np; A = np.array([[1, 2], [3, 4]]); print(A @ np.array([1, 1]))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Les formes doivent s’emboîter

On ne peut multiplier deux matrices que si le nombre de colonnes de la première égale le nombre de lignes de la seconde. Sinon les produits scalaires n’ont pas la même taille.

Une matrice (2, 3) fois une matrice (3, 4) donne une matrice (2, 4). On garde les deux nombres extérieurs.

Exemple travaillé : trois produits possibles ou non

Première formeSeconde formePossible ?Forme du produit
(2, 3)(3, 4)oui(2, 4)
(2, 2)(2, 1)oui(2, 1)
(2, 3)(2, 3)nonaucune

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La forme d’un produit de matrices

Commande
docker exec jupyter python3 -c "import numpy as np; print((np.ones((2, 3)) @ np.ones((3, 4))).shape)"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le produit remplit une case à la fois

Prenons la case de la ligne i et de la colonne j du résultat. On fait le produit scalaire de la ligne i de la première matrice avec la colonne j de la seconde.

Avec A = [[1, 2], [3, 4]] et B = [[0, 1], [1, 0]], la première case vaut 1 × 0 + 2 × 1, soit 2. On remplit ainsi les quatre cases.

Exemple travaillé : A fois B

CaseLigne de A avec colonne de BValeur
ligne 1, colonne 11 × 0 + 2 × 12
ligne 1, colonne 21 × 1 + 2 × 01
ligne 2, colonne 13 × 0 + 4 × 14
ligne 2, colonne 23 × 1 + 4 × 03

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Le produit de A par B avec NumPy

Commande
docker exec jupyter python3 -c "import numpy as np; A = np.array([[1, 2], [3, 4]]); B = np.array([[0, 1], [1, 0]]); print(A @ B)"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup pensent que A fois B donne la même chose que B fois A. C’est faux. Avec les matrices du tableau, A fois B donne [[2, 1], [4, 3]] et B fois A donne [[3, 4], [1, 2]]. L’ordre compte toujours.

Pour aller plus loin

Dans un carnet, écrivez deux matrices de forme (3, 3) avec NumPy et comparez A @ B avec B @ A.

Un réseau de neurones, vu plus tard, n’est qu’une suite de produits de matrices : une couche multiplie ses entrées par une matrice de poids.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.