Transposer une matrice en Python
Les matrices peuvent être représentées à l’aide de listes multidimensionnelles en Python. Une fois exprimé, nous pouvons effectuer toutes les opérations que nous pouvons effectuer sur les matrices en théorie mathématique, telles que la multiplication matricielle, l’addition matricielle et la soustraction.
Cet article parlera d’une telle opération. Nous allons apprendre à transposer une matrice en Python à l’aide de quelques exemples pertinents.
Transposer une matrice en Python
Pour transposer une matrice en Python, nous pouvons écrire une simple fonction stub et utiliser des boucles for
pour transposer une matrice d’entrée.
def transpose(matrix):
if matrix == None or len(matrix) == 0:
return []
result = [[None for i in range(len(matrix))] for j in range(len(matrix[0]))]
for i in range(len(matrix[0])):
for j in range(len(matrix)):
result[i][j] = matrix[j][i]
return result
def print_matrix(matrix):
for row in matrix:
print(*row)
array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
result = transpose(array)
print_matrix(result)
Production :
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
La complexité temporelle et spatiale de la méthode ci-dessus est O(mn)
, où m
est le nombre de lignes dans la matrice d’entrée et n
est le nombre de colonnes dans la matrice d’entrée.
La complexité temporelle est O(mn)
car nous itérons sur toute la matrice d’entrée. La complexité spatiale est O(mn)
car nous créons une copie de la matrice d’entrée et la stockons dans une variable distincte.
La fonction stub ci-dessus crée d’abord une matrice temporaire de taille n x m
avec des valeurs None
si la forme de la matrice d’entrée est m x n
. Ici, m
est le nombre de lignes dans la matrice d’entrée et n
est le nombre de colonnes dans la matrice d’entrée.
Ensuite, il itère sur la matrice d’entrée à l’aide de deux boucles for
imbriquées. A l’intérieur des deux boucles for
, les valeurs None
sont remplacées par les valeurs réelles de la matrice d’entrée (result[i][j] = matrix[j][i]
). Enfin, la matrice temporaire est renvoyée en sortie.
Au lieu d’utiliser deux boucles for
imbriquées pour remplir la matrice temporaire, nous pouvons également écrire la logique de transposition sur une seule ligne pour gagner de la place.
def transpose(matrix):
if matrix == None or len(matrix) == 0:
return []
return [[matrix[i][j] for i in range(len(matrix))] for j in range(len(matrix[0]))]
def print_matrix(matrix):
for row in matrix:
print(*row)
array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
result = transpose(array)
print_matrix(result)
Production :
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
La complexité temporelle et spatiale de cette solution est également la même que celle de la solution précédente, O(mn)
.
Transposer une matrice en Python à l’aide du module NumPy
Le NumPy
est un package Python riche en utilitaires pour jouer avec de grandes matrices et tableaux multidimensionnels et effectuer des opérations mathématiques à la fois complexes et simples sur eux. Ces utilitaires sont non seulement dynamiques pour les entrées, mais aussi hautement optimisés et rapides.
En utilisant le module NumPy
en Python, nous pouvons transposer une matrice de deux manières. La première consiste à utiliser l’attribut T
d’un tableau NumPy
, et la seconde consiste à appeler la méthode transpose()
d’un tableau NumPy
.
Reportez-vous au code Python suivant pour comprendre comment utiliser les deux méthodes mentionnées.
Remarque : Pour utiliser ces utilitaires, nous devons d’abord convertir la matrice d’entrée en un tableau NumPy
en utilisant la méthode numpy.array()
. Pour en savoir plus sur cette méthode, cliquez ici.
import numpy as np
array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
array = np.array(array)
print(array.T) # First Method
print(array.transpose()) # Second Method
Production :
[[ 1 6 11]
[ 2 7 12]
[ 3 8 13]
[ 4 9 14]
[ 5 10 15]]
[[ 1 6 11]
[ 2 7 12]
[ 3 8 13]
[ 4 9 14]
[ 5 10 15]]
Le transpose()
accepte un argument axes
qui peut être utilisé pour effectuer des modifications de transposition intéressantes sur un tableau NumPy
. Pour en savoir plus sur cette méthode, cliquez ici.