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 log4jPython
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.
Pythonm = [(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.
Pythonimport 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
Pythonimport 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.
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')
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