logo

Siirrä matriisi yhdellä rivillä pythonissa

Matriisin siirtäminen Pythonissa tarkoittaa sen kääntämistä diagonaalin yli kääntämällä kaikki rivit pylväiksi ja kaikki sarakkeet riveiksi. Tentlspl E Matriisi, kuten [[1 2] [3 4] [5 6]], jossa on 3 riviä ja 2 saraketta, tulee [[1 3 5] [2 4 6]], joissa on 2 riviä ja 3 saraketta siirron jälkeen. Ymmärrämme erilaisia ​​menetelmiä tämän tehokkaasti.

Luettelon ymmärtämisen käyttäminen

Luettelon ymmärtämistä käytetään iterointiin jokaisen matriisin elementin läpi. Annetussa esimerkissä iteraimme matriisin (M) jokaisen elementin läpi pylväs-matalilla ja määritämme tuloksen REZ-matriisiin, joka on m: n siirto.



slf4j vs log4j
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) 

Tulos
[1 3 5] [2 4 6] 

Selitys: Tämä lauseke luo uuden matriisin ottamalla jokainen sarake alkuperäisestä uudessa rivinnä. Se vaihtaa rivejä sarakkeilla.

Sisä- laulaa vetoketju

Python Zip palauttaa iteraattorin Tuples-laitteista, joissa I-tuuma sisältää I-TH: n elementin jokaisesta argumenttijaksosta tai iterablesista. Tässä esimerkissä irrotamme taulukon * ja vetoketjutamme sen saamiseksi.

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) 

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

Selitys: Tämä koodi siirtää matriisin m käyttäminen vetoketju (*m) . * Purkaa rivit ja postinumero() Ryhmät elementit sarakkeessa. Jokainen lähtötuple edustaa alkuperäisen matriisin saraketta, joka vaihdetaan tehokkaasti rivejä ja sarakkeita.



Käyttämällä numphy

Python Numpy on yleiskäyttöinen taulukkojen käsittelypaketti, joka on suunniteltu manipuloimaan tehokkaasti suuria moniulotteisia taulukkoja.

Esimerkki 1: Transpose-menetelmä palauttaa siirretyn näkymän ohitettuun moniulotteiseen matriisiin.

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

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

Selitys: Numpy.Transpose () Vaihda matriisin m. Se muuntaa 2 rivin ja 3 sarakkeen alkuperäisen matriisin 3 rivillä ja 2 saraketta, jotka siirtävät sen tehokkaasti.



Esimerkki 2: Käyttämällä '.t' muuttujan jälkeen

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

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

Selitys: Tämä koodi käyttää numpyä luomaan 2D -taulukko M .T . Se .T Attribuutin vaihtosuorat rivit ja sarakkeet, jotka muuntavat alkuperäisen 2x3 -matriisin 3x2 -siirretyksi matriisiksi.

ITERTOOLS: n käyttäminen

Python Itertools on moduuli, joka tarjoaa erilaisia ​​toimintoja, jotka toimivat iteraattoreissa tuottaakseen monimutkaisia ​​iteraattoreita. Chain () on funktio, joka ottaa sarjan iterablia ja palauttaa yhden iteroitavan.

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

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

Selitys: Se muuntaa matriisin ensin luetteloluetteloon tasoittaa sen yhdeksi luetteloksi ketjun (*M) avulla, sitten rakentaa siirretty matriisi viipaloimalla jokainen N-TH-elementti.

jono ja prioriteettijono javassa

Aiheeseen liittyvät artikkelit:

  • Luettelo
  • Python itertools
  • Python Zip
  • ketju()
  • tuplat
  • Python numphy