Transposar una matriu a Python significa que la seva diagonal conversa totes les files en columnes i totes les columnes en files. Per a exemples E Una matriu com [[1 2] [3 4] [5 6]] que té 3 files i 2 columnes es converteix en [[1 3 5] [2 4 6]] que té 2 files i 3 columnes després de la transposició. Entenem diferents mètodes per fer -ho de manera eficient.
Utilitzant la comprensió de la llista
La comprensió de la llista s'utilitza per iterar a través de cada element de la matriu. En l'exemple donat, iterem a través de cada element de matriu (m) de manera més gran de columna i assignem el resultat a la matriu REZ que és la transposició de m.
fer que l'script de shell sigui executablePython
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)
Producció
[1 3 5] [2 4 6]
Explicació: Aquesta expressió crea una nova matriu agafant cada columna de l'original com a fila del nou. Intercanvien files amb columnes.
Dins de cantar zip
Python Zip retorna un iterador de Tuples on la Tuple I-Th conté l’element I-Th de cadascuna de les seqüències d’argument o iterables. En aquest exemple, descomprimim la nostra matriu mitjançant * i després la posem per obtenir la transposició.
Pythonm = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row)
Producció
(1 4 7 10) (2 5 8 11) (3 6 9 12)
Explicació: Aquest codi transmet la matriu M utilitzar Zip (*M) . El * desembala les files i zip () Grups Elements amb columna. Cada tuple de sortida representa una columna de la matriu original que canvia efectivament les files i les columnes.
Utilitzant numpy
Python Numpy és un paquet de processament de matrius de propòsit general dissenyat per manipular eficientment grans matrius multidimensionals.
Exemple 1: El mètode transposat retorna una visió transposada de la matriu multidimensional passada.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
Producció
[[1 4] [2 5] [3 6]]
Explicació: numpy.transpose () intercanviar files i columnes de la matriu m. Converteix la matriu original de 2 files i 3 columnes en una amb 3 files i 2 columnes transposant -la efectivament.
Exemple 2: Utilitzant '.t' després de la variable
Pythonimport numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T)
Producció
[[1 4] [2 5] [3 6]]
Explicació: Aquest codi utilitza numpy per crear una matriu 2D M i després imprimir la seva transposició mitjançant . . El . Les files i columnes intercanvien les files i les columnes que converteixen la matriu 2x3 original en una matriu transposada 3x2.
Utilitzant iTerTools
Python Itertools és un mòdul que proporciona diverses funcions que treballen en iterators per produir iteradors complexos. Chain () és una funció que pren una sèrie de iterables i retorna un iterable.
Pythonfrom 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')
Producció
[[1 4] [2 5] [3 6]] Time taken 9813 ns
Explicació: Primer converteix la matriu en una llista de llistes que la aplana en una llista única mitjançant la cadena (*m) i després reconstrueix la matriu transposada tallant tots els elements n-th.
for loop a bash
Articles relacionats:
- Llista de comprensió
- Python Itertools
- Python Zip
- cadena ()
- tuples
- Python numpy