logo

Transponere en matrise i enkeltlinje i Python

Å transponere en matrise i Python betyr å bla den over den diagonale å gjøre alle radene til søyler og alle kolonnene til rader. For eksempler E A Matrix som [[1 2] [3 4] [5 6]] som har 3 rader og 2 kolonner blir [[1 3 5] [2 4 6]] som har 2 rader og 3 kolonner etter transponering. La oss forstå forskjellige metoder for å gjøre dette effektivt.

Bruke listeforståelse

Listeforståelse brukes til å iterere gjennom hvert element i matrisen. I det gitte eksemplet itererer vi gjennom hvert element av matrise (m) på en kolonne-major måte og tilordne resultatet til Rez-matrisen som er transponering av m.



java char til heltall
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) 

Produksjon
[1 3 5] [2 4 6] 

Forklaring: Dette uttrykket oppretter en ny matrise ved å ta hver kolonne fra originalen som en rad i den nye. Den bytter rader med kolonner.

I Syng zip

Python Zip returnerer en iterator av tuples der i-th-tupelen inneholder I-Th-elementet fra hvert av argumentsekvensene eller iterablene. I dette eksemplet pakker vi ut vår matrise med * og glidelås det for å få transponering.

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) 

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

Forklaring: Denne koden overfører matrisen m Bruker glidelås (*m) . * Pakker ut radene og zip () Grupper elementer kolonnemessig. Hver utgangstuple representerer en kolonne fra den originale matrisen som effektivt bytter rader og kolonner.



Bruker Numpy

Python Numpy er en generell-prosesseringspakke som er designet for å effektivt manipulere store flerdimensjonale matriser.

Eksempel 1: Transponeringsmetoden returnerer et transponert syn på den passerte flerdimensjonale matrisen.

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

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

Forklaring: numpy.transpose () Bytt rader og kolonner i matrisen m. Den konverterer den originale matrisen på 2 rader og 3 kolonner til en med 3 rader og 2 kolonner som effektivt transponerer den.



Eksempel 2: Bruker '.t' etter variabelen

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

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

Forklaring: Denne koden bruker Numpy for å opprette en 2D -matrise M, og skriver deretter ut transponering ved hjelp av .T . De .T Attributt bytter rader og kolonner som konverterer den originale 2x3 -matrisen til en 3x2 transponert matrise.

Bruke Iterertools

Python iterertools er en modul som gir forskjellige funksjoner som fungerer på iteratorer for å produsere komplekse iteratorer. Kjede () er en funksjon som tar en serie iterabler og returnerer en iterable.

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

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

Forklaring: Den konverterer først matrisen til en liste over lister flater den til en enkelt liste ved hjelp av kjede (*m) og gjenoppbygger deretter den transponerte matrisen ved å skive hvert n-th element.

liste til array java

Relaterte artikler:

  • Listeforståelse
  • Python iterertools
  • Python Zip
  • kjede()
  • tuples
  • Python Numpy