Transposer une matrice en Python

Vaibhav Vaibhav 30 janvier 2023
  1. Transposer une matrice en Python
  2. Transposer une matrice en Python à l’aide du module NumPy
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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Article connexe - Python Matrix