Opérations matricielles Python avec NumPy : transposition, addition, multiplication et slicing – Guide pratique
Opérations matricielles Python avec NumPy : transposition, addition, multiplication et slicing
La modélisation mathématique, le calcul scientifique et l'analyse de données reposent souvent sur la manipulation efficace de données bidimensionnelles. En Python, les matrices peuvent être créées avec des listes simples ou, plus puissamment, avec la bibliothèque NumPy. Ce guide vous guide à travers les opérations matricielles les plus courantes, avec des exemples de code clairs et des conseils de bonnes pratiques.
Qu'est-ce qu'une matrice ?
Une matrice est un tableau rectangulaire de nombres (ou autres types de données) organisés en lignes et colonnes. Bien que Python n'ait pas de type matrice dédié dans son langage de base, vous pouvez en représenter une avec des listes imbriquées ou avec le ndarray de NumPy, qui offre des opérations vectorisées rapides.
Créer une matrice avec des listes imbriquées
Les listes imbriquées sont la façon la plus simple de construire une matrice. Chaque liste interne représente une ligne :
# Matrice 3x3
M1 = [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
print(M1)
Sortie :
[[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
Lire des données
Accéder aux éléments via indices de ligne et colonne. Pour afficher le dernier élément de chaque ligne :
for row in M1:
print(row[-1])
Sortie :
-6 4 21
Additionner des matrices
Quand les deux matrices partagent la même forme, l'addition élément par élément est simple :
M2 = [[3, 16, -6], [9, 7, -4], [-1, 3, 13]]
# Matrice résultat
M3 = [[M1[i][j] + M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)
Sortie :
[[11, 30, -12], [21, 14, 0], [-12, 6, 34]]
Multiplication élément par élément
De même, vous pouvez multiplier les éléments correspondants :
M3 = [[M1[i][j] * M2[i][j] for j in range(len(M1[0]))] for i in range(len(M1))]
print(M3)
Sortie :
[[24, 224, 36], [108, 49, -16], [11, 9, 273]]
Utiliser NumPy pour des opérations matricielles efficaces
NumPy fournit un type array dédié et une multitude d'opérations vectorisées. Installez-le avec pip install numpy et importez-le comme np :
import numpy as np
Créer une matrice
M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]])
print(M1)
Sortie :
[[ 5 -10 15] [ 3 -6 9] [-4 8 12]]
Opérations de base
- Addition :
M3 = M1 + M2 - Soustraction :
M3 = M1 - M2 - Produit scalaire (multiplication matricielle) :
M3 = M1.dot(M2)ouM1 @ M2 - Transposition :
M2 = M1.transpose()ouM1.T
Exemple : Produit scalaire de matrices
M1 = np.array([[3, 6], [5, -10]])
M2 = np.array([[9, -18], [11, 22]])
print(M1.dot(M2))
Sortie :
[[ 93 78] [-65 -310]]
Slicing (tranchage)
Trancher lignes et colonnes avec array[row_start:row_end, col_start:col_end] :
M = np.array([[2, 4, 6, 8, 10],
[3, 6, 9, -12, -15],
[4, 8, 12, 16, -20],
[5, -10, 15, -20, 25]])
print(M[1:3, 1:4]) # lignes 1-2, colonnes 1-3
print(M[:, 3]) # toutes lignes, 4ème colonne
print(M[:1, :]) # première ligne, toutes colonnes
print(M[:3, :2]) # premières 3 lignes, premières 2 colonnes
Sortie :
[[ 6 9 -12] [ 8 12 16]] [ 8 -12 16 -20] [[ 2 4 6 8 10]] [[ 2 4] [ 3 6] [ 4 8]]
Accéder aux lignes et colonnes
# Lignes
print(M[0]) # première ligne
print(M[-1]) # dernière ligne
# Colonnes
print(M[:, 0]) # première colonne
print(M[:, -1]) # dernière colonne
Points clés à retenir
- Les listes de listes de Python suffisent pour de petites matrices, mais le
ndarrayde NumPy échelle bien mieux. - Les opérations élément par élément (+, -, *, /) fonctionnent directement sur les arrays NumPy.
- Pour la vraie multiplication matricielle, utilisez
np.dot()ou l'opérateur@. - Le slicing offre des moyens puissants d'extraire des sous-matrices ou lignes/colonnes spécifiques.
- Assurez-vous toujours que les matrices ont des formes compatibles avant d'effectuer des opérations.
Python
- Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
- Les tableaux en C++ : Déclaration, initialisation et techniques avec pointeurs
- Fonction Python print() : Guide pratique avec exemples
- Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
- Maîtriser les chaînes format() en Python avec exemples clairs
- Maîtriser la méthode String.find() de Python : Syntaxe, Exemples et Alternatives
- Maîtriser les fonctions lambda Python : exemples pratiques et bonnes pratiques
- Fonction Python abs() : calculer les valeurs absolues pour nombres et nombres complexes
- Fonction Python round() expliquée avec exemples pratiques