Prenos matrice v Pythonu pomeni, da jo prelijemo čez svojo diagonalno pretvorbo vseh vrstic v stolpce in vse stolpce v vrstice. Za Exampl e a matrika, kot je [[1 2] [3 4] [5 6]], ki ima 3 vrstice in 2 stolpca postane [[1 3 5] [2 4 6]], ki ima 2 vrstice in 3 stolpce po prenosu. Razumejmo različne metode za to učinkovito.
Z uporabo razumevanja seznama
Razumevanje seznama se uporablja za ponovitev skozi vsak element v matrici. V danem primeru ponovimo skozi vsak element matrice (m) na način-stolpca in rezultat dodelimo matriki REZ, ki je prenos m.
iphone emoji na androiduPython
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)
Izhod
[1 3 5] [2 4 6]
Pojasnilo: Ta izraz ustvari novo matrico tako, da vsak stolpec iz izvirnika vzame kot vrstico v novi. Zamenja vrstice s stolpci.
V pojem Zip
Python Zip vrne iterator tuple, kjer i-th tuple vsebuje i-th element iz vsake od sekvenc argumentov ali iterable. V tem primeru odpenjamo svoj matriko s * in ga nato zadržite, da dobimo prenos.
Pythonm = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row)
Izhod
(1 4 7 10) (2 5 8 11) (3 6 9 12)
Pojasnilo: Ta koda prenaša matrico m z uporabo Zip (*m) . * Razpakira vrstice in Zip () Skupine elementov v stolpcu. Vsak izhodni nabor predstavlja stolpec iz prvotne matrice, ki učinkovito zamenja vrstice in stolpce.
Z uporabo Numpy
Python Numpy je splošni paket za obdelavo matrike, zasnovan za učinkovito manipulacijo z velikimi večdimenzionalnimi nizi.
Primer 1: Transpose metoda vrne preneseni pogled na večdimenzionalno matrico.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
Izhod
[[1 4] [2 5] [3 6]]
Pojasnilo: numpy.transpose () Zamenjave vrstice in stolpci matrice m. Originalno matrico 2 vrstic in 3 stolpce pretvori v eno s 3 vrsticami in 2 stolpci, ki jo učinkovito prenašata.
Primer 2: Z uporabo '.t' po spremenljivki
Pythonimport numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T)
Izhod
[[1 4] [2 5] [3 6]]
Pojasnilo: Ta koda uporablja NumPy, da ustvari 2D matriko m, nato pa svoj prenos natisne s pomočjo .T . The .T Atribute zamenjave vrstic in stolpcev, ki pretvorijo originalno matrico 2x3 v 3x2 transponirano matrico.
Uporaba itertools
Python Itertools je modul, ki zagotavlja različne funkcije, ki delujejo na iteratorjih za izdelavo zapletenih iteratorjev. Chain () je funkcija, ki vzame vrsto iterable in ga vrne itablet.
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')
Izhod
[[1 4] [2 5] [3 6]] Time taken 9813 ns
Pojasnilo: Matrico najprej pretvori na seznam seznamov, ki jo spusti v en seznam z uporabo verige (*m), nato obnovi prenosno matrico z rezanjem vsakega N-th elementa.
tat polna oblika
Povezani članki:
- Razumevanje seznama
- Python itertools
- Python Zip
- veriga ()
- Tuples
- Python Numpy