logo

Transposer une matrice en une seule ligne en Python

Transposer une matrice en Python signifie la retourner sur sa diagonale, transformant toutes les lignes en colonnes et toutes les colonnes en lignes. Par exemple e une matrice comme [[1 2] [3 4] [5 6]] qui a 3 lignes et 2 colonnes devient [[1 3 5] [2 4 6]] qui a 2 lignes et 3 colonnes après transposition. Comprenons différentes méthodes pour le faire efficacement.

Utiliser la compréhension de liste

La compréhension de liste est utilisée pour parcourir chaque élément de la matrice. Dans l'exemple donné, nous parcourons chaque élément de la matrice (m) en colonne majeure et attribuons le résultat à la matrice rez qui est la transposée de m.



désactiver le mode développeur Android
Python
m = [[1 2] [3 4] [5 6]] res = [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))] for row in res: print(row) 

Sortir
[1 3 5] [2 4 6] 

Explication: Cette expression crée une nouvelle matrice en prenant chaque colonne de l'original comme ligne dans la nouvelle. Il échange des lignes avec des colonnes.

DANS chanter zip

Python Zip renvoie un itérateur de tuples où le i-ème tuple contient le i-ème élément de chacune des séquences d'arguments ou itérables. Dans cet exemple, nous décompressons notre tableau en utilisant *, puis nous le compressons pour obtenir la transposition.

Python
m = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row) 

Sortir
(1 4 7 10) (2 5 8 11) (3 6 9 12) 

Explication: Ce code transpose la matrice m en utilisant zip(*m) . Le * décompresse les lignes et fermeture éclair() regroupe les éléments par colonnes. Chaque tuple de sortie représente une colonne de la matrice d'origine en échangeant efficacement les lignes et les colonnes.



Utiliser NumPy

Python NumPy est un package de traitement de tableaux à usage général conçu pour manipuler efficacement de grands tableaux multidimensionnels.

Exemple 1 : La méthode transpose renvoie une vue transposée de la matrice multidimensionnelle transmise.

Python
import numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m)) 

Sortir
[[1 4] [2 5] [3 6]] 

Explication : numpy.transpose() permutez les lignes et les colonnes de la matrice m. Il convertit la matrice originale de 2 lignes et 3 colonnes en une seule avec 3 lignes et 2 colonnes la transposant efficacement.



Exemple 2 : Utiliser '.T' après la variable

Python
import numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T) 

Sortir
[[1 4] [2 5] [3 6]] 

Explication: Ce code utilise NumPy pour créer un tableau 2D m puis imprime sa transposition en utilisant .T . Le .T l'attribut permute les lignes et les colonnes, convertissant la matrice 2x3 d'origine en une matrice transposée 3x2.

Utiliser Itertools

Python itertools est un module qui fournit diverses fonctions qui fonctionnent sur les itérateurs pour produire des itérateurs complexes. chain() est une fonction qui prend une série d’itérables et en renvoie un.

Python
from itertools import chain import time import numpy as np def transpose2(M): M = M.tolist() n = len(M[0]) L = list(chain(*M)) return [L[i::n] for i in range(n)] m = np.array([[1 2 3] [4 5 6]]) start = time.time_ns() res = transpose2(m) end = time.time_ns() print(res) print('Time taken' end - start 'ns') 

Sortir
[[1 4] [2 5] [3 6]] Time taken 9813 ns 

Explication: Il convertit d'abord la matrice en une liste de listes, l'aplatit en une seule liste à l'aide de chain(*M), puis reconstruit la matrice transposée en découpant chaque n-ième élément.

govinda

Articles connexes :

  • Compréhension de la liste
  • Outils d'itération Python
  • Zip Python
  • chaîne()
  • tuples
  • Python NumPy