Att transponera en matris i Python innebär att det bläddrar över dess diagonala som förvandlar alla rader till kolumner och alla kolumner till rader. För exampl E en matris som [[1 2] [3 4] [5 6]] som har 3 rader och 2 kolumner blir [[1 3 5] [2 4 6]] som har 2 rader och 3 kolumner efter transponering. Låt oss förstå olika metoder för att göra detta effektivt.
Använda listförståelse
Listförståelse används för att iterera genom varje element i matrisen. I det givna exemplet itererar vi genom varje element i matrisen (m) på ett kolumn-major sätt och tilldelar resultatet till REZ-matrisen som är transponering av m.
Java-serversidorPython
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)
Produktion
[1 3 5] [2 4 6]
Förklaring: Detta uttryck skapar en ny matris genom att ta varje kolumn från originalet som en rad i den nya. Den byter rader med kolumner.
I sjunga zip
Python Zip returnerar en iterator av tuples där den i-tuple innehåller det i-th-elementet från var och en av argumentsekvenserna eller iterables. I det här exemplet packar vi upp vår matris med * och zip den sedan för att få transponeringen.
Pythonm = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row)
Produktion
(1 4 7 10) (2 5 8 11) (3 6 9 12)
Förklaring: Denna kod transponerar matrisen m användning zip (*m) . * Packar upp raderna och blixtlås() Grupper Elements kolumnmässigt. Varje utgångstuple representerar en kolumn från den ursprungliga matrisen som effektivt byter rader och kolumner.
Använder numpy
Python Numpy är ett allmänt paketbehandlingspaket utformat för att effektivt manipulera stora flerdimensionella matriser.
Exempel 1: Transponeringsmetoden returnerar en transponerad vy av den passerade multidimensionella matrisen.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
Produktion
[[1 4] [2 5] [3 6]]
Förklaring: numpy.transpose () Byt rader och kolumner i matrisen m. Den konverterar den ursprungliga matrisen med 2 rader och 3 kolumner till en med 3 rader och 2 kolumner som transponerar den effektivt.
Exempel 2: Använder '.t' efter variabeln
Pythonimport numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T)
Produktion
[[1 4] [2 5] [3 6]]
Förklaring: Den här koden använder Numpy för att skapa en 2D -matris M och skriver sedan ut sin transponering med hjälp av .T . De .T Attribut byter rader och kolumner som konverterar den ursprungliga 2x3 -matrisen till en 3x2 transponerad matris.
Använda Itertools
Python Iterertools är en modul som tillhandahåller olika funktioner som arbetar med iteratorer för att producera komplexa iteratorer. Chain () är en funktion som tar en serie iterables och returnerar en iterabel.
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')
Produktion
[[1 4] [2 5] [3 6]] Time taken 9813 ns
Förklaring: Den konverterar först matrisen till en lista med listor plattar den till en enda lista med kedjan (*m) och bygger sedan om den transponerade matrisen genom att skära varje n-element.
alfabetets nummer
Relaterade artiklar:
- Listförståelse
- Python itertools
- Python zip
- kedja()
- tuples
- Python numpy