logo

Transponere en matrix i en enkelt linje i Python

Transponering af en matrix i Python betyder at vende den over dens diagonale omdannelse af alle rækker til kolonner og alle søjler til rækker. Til eksempler e en matrix som [[1 2] [3 4] [5 6]], der har 3 rækker og 2 kolonner bliver [[1 3 5] [2 4 6]], som har 2 rækker og 3 kolonner efter transponering. Lad os forstå forskellige metoder til at gøre dette effektivt.

Ved hjælp af listeforståelse

Listeforståelse bruges til at iterere gennem hvert element i matrixen. I det givne eksempel itererer vi gennem hvert element af matrix (M) på en søjle-major måde og tildeler resultatet til Rez-matrixen, som er transponeringen af ​​M.



java char til heltal
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] 

Forklaring: Dette udtryk skaber en ny matrix ved at tage hver kolonne fra originalen som en række i det nye. Det bytter rækker med kolonner.

I syng lynlås

Python ZIP returnerer en iterator af tuples, hvor den i-tuple indeholder det i-th-element fra hvert af argumentsekvenserne eller iterables. I dette eksempel udpeger vi vores matrix ved hjælp af * og derefter lynlåser det for at 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) 

Forklaring: Denne kode transponerer matrixen m Brug af Zip (*m) . * Pakker rækkerne ud og zip () Grupper elementer kolonnevis. Hver output tuple repræsenterer en kolonne fra den originale matrix, der effektivt bytter rækker og kolonner.



Brug af numpy

Python Numpy er en generel array-behandlingspakke designet til effektivt at manipulere store multidimensionelle arrays.

Eksempel 1: Transponeringsmetoden returnerer et transponeret overblik over den passerede multidimensionelle matrix.

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

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

Forklaring: numpy.transpose () Swap rækker og kolonner i matrixen m. Det konverterer den originale matrix på 2 rækker og 3 kolonner til en med 3 rækker og 2 kolonner, der effektivt transponerer den.



Eksempel 2: Ved hjælp af '.t' efter variablen

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

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

Forklaring: Denne kode bruger numpy til at oprette en 2D -matrix m og udskriver derefter sin transponering ved hjælp af .T . De .T Attribut bytter rækker og kolonner, der konverterer den originale 2x3 -matrix til en 3x2 transponeret matrix.

Brug af itertools

Python itertools er et modul, der leverer forskellige funktioner, der fungerer på iteratorer til at producere komplekse iteratorer. Kæde () er en funktion, der tager en række iterables 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') 

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

Forklaring: Den konverterer først matrixen til en liste over lister flater den til en enkelt liste ved hjælp af kæde (*M) genopbygger derefter den transponerede matrix ved at skære hvert N-th-element.

liste til array java

Relaterede artikler:

  • Listeforståelse
  • Python itertools
  • Python Zip
  • kæde()
  • tuples
  • Python Numpy