Transpunerea unei matrice în Python înseamnă să -l răsfoiți peste diagonală, transformând toate rândurile în coloane și toate coloanele în rânduri. Pentru examen E A matrice ca [[1 2] [3 4] [5 6]] care are 3 rânduri și 2 coloane devine [[1 3 5] [2 4 6]] care are 2 rânduri și 3 coloane după transpunere. Să înțelegem diferite metode pentru a face acest lucru eficient.
Folosind înțelegerea listei
Înțelegerea listei este utilizată pentru a itera prin fiecare element din matrice. În exemplul dat, iterăm prin fiecare element al matricei (M) într-o manieră-major de coloană și atribuim rezultatul matricei Rez care este transpunerea lui M.
serial în postgresPython
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)
Ieșire
[1 3 5] [2 4 6]
Explicaţie: Această expresie creează o nouă matrice luând fiecare coloană din original ca rând în noul. Schimbă rândurile cu coloane.
ÎN cântă fermoar
Python Zip returnează un iterator de tupluri în care I-Th Tuple conține elementul I-Th din fiecare dintre secvențele de argumente sau iterabile. În acest exemplu, ne dezvăluim tabloul folosind * și apoi îl tăiem pentru a obține transpunerea.
Pythonm = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row)
Ieșire
(1 4 7 10) (2 5 8 11) (3 6 9 12)
Explicaţie: Acest cod transpune matricea m folosind Zip (*m) . * Despachetează rândurile și ZIP () grupuri elemente înțelepte pe coloană. Fiecare tuple de ieșire reprezintă o coloană din matricea originală care schimbă eficient rândurile și coloanele.
Folosind Numpy
Python Numpy este un pachet de procesare a tablourilor generale de scop general conceput pentru a manipula eficient materii mari multidimensionale.
Exemplul 1: Metoda de transpunere returnează o vedere transpusă a matricei multidimensionale trecute.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
Ieșire
[[1 4] [2 5] [3 6]]
Explicație: numpy.transpose () Schimbați rândurile și coloanele matricei m. Convertește matricea originală de 2 rânduri și 3 coloane într -una cu 3 rânduri și 2 coloane care o transpune eficient.
Exemplul 2: Folosind „.t” după variabilă
port de ascultarePython
import numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T)
Ieșire
[[1 4] [2 5] [3 6]]
Explicaţie: Acest cod folosește Numpy pentru a crea un tablou 2d M, apoi imprimă transpunerea acestuia folosind .T . .T Atribute swap -uri și coloane convertind matricea originală 2x3 într -o matrice transpusă 3x2.
Folosind iterTools
Python IterOols este un modul care oferă diverse funcții care funcționează pe iteratori pentru a produce iteratori complexi. Chain () este o funcție care ia o serie de iterabile și returnează unul iterabil.
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')
Ieșire
[[1 4] [2 5] [3 6]] Time taken 9813 ns
Explicaţie: Mai întâi transformă matricea într-o listă de liste o aplatizează într-o singură listă folosind lanțul (*m), apoi reconstruiește matricea transpusă prin tăierea fiecărui element al n-a.
Articole înrudite:
- Înțelegerea listei
- Python IterOols
- Python Zip
- lanţ()
- tupluri
- Python Numpy