logo

Transponera en matris i enstaka linjer i Python

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-serversidor
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) 

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.

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) 

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.

Python
import 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

Python
import 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.

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') 

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