Prenositi matricu u jednom liniji u Pythonu
Prenošenje matrice u Pythonu znači prebaciti je preko dijagonale pretvarajući sve retke u stupce i sve stupove u redove. Za ExamPL E matrica poput [[1 2] [3 4] [5 6]] koja ima 3 reda, a 2 stupca postaju [[1 3 5] [2 4 6]] koji ima 2 reda i 3 stupca nakon prenošenja. Shvatimo različite metode za to učinkovito.
Korištenje razumijevanja popisa
Razumijevanje popisa koristi se za ponavljanje kroz svaki element u matrici. U danom primjeru ponavljamo kroz svaki element matrice (m) na način stupca-jajor i dodijelimo rezultat Rez matrici koja je transporta m.
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 )
Izlaz
[1 3 5] [2 4 6]
Obrazloženje: Ovaj izraz stvara novu matricu uzimajući svaki stupac iz originala kao redak u novom. Zamijeni redove stupcima.
U Pjevajte patentni zatvarač
Python Zip vraća iterator tuplesa gdje I-Th tuple sadrži I-Th element iz svake od nizova argumentacije ili iterabama. U ovom primjeru otkopčavamo svoj niz koristeći *, a zatim ga zipirate da biste dobili transpozud.
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 )
Izlaz
(1 4 7 10) (2 5 8 11) (3 6 9 12)
Obrazloženje: Ovaj kôd prenosi matricu m korištenje Zip (*m) . * Raspakira redove i Zip () grupe elementi stupca. Svaki izlazni tuple predstavlja stupac iz izvorne matrice učinkovito izmjenjujući redove i stupce.
Korištenje numpo
Python NumPy je paket za obradu niza opće namjene dizajniran za učinkovito manipuliranje velikim višedimenzionalnim nizovima.
Primjer 1: METODA TRANSPODE vraća prenoseni prikaz prođene višedimenzionalne matrice.
Python import numpy m = [[ 1 2 3 ] [ 4 5 6 ]] print ( numpy . transpose ( m ))
Izlaz
[[1 4] [2 5] [3 6]]
Objašnjenje: numpy.transpose () Zamijenite redove i stupce matrice m. Pretvara originalnu matricu od 2 reda i 3 stupca u jedan s 3 reda i 2 stupca koji ga učinkovito prenose.
Primjer 2: Korištenje '.t' nakon varijable
Python import numpy as np m = np . array ([[ 1 2 3 ] [ 4 5 6 ]]) print ( m . T )
Izlaz
[[1 4] [2 5] [3 6]]
Obrazloženje: Ovaj kôd koristi numPy za stvaranje 2D polja m, a zatim ispisuje svoj transpose koristeći .T . A .T Atribut zamjenjuje redove i stupce koji pretvaraju originalnu 2x3 matricu u matricu transponirane 3x2.
Korištenje IterTools
Python IterTools je modul koji pruža razne funkcije koje rade na iteratorima za proizvodnju složenih iteratora. Chain () je funkcija koja uzima niz iterabnih i vraća jedan itera.
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' )
Izlaz
[[1 4] [2 5] [3 6]] Time taken 9813 ns
Obrazloženje: Prvo pretvara matricu u popis popisa spljoštava ga u jedan popis pomoću lanca (*m), a zatim obnavlja prenosenu matricu narezajući svaki n-tu element.
Povezani članci:
- Razumijevanje popisa
- Python IterTools
- Pithon patent
- lanac()
- tuples
- Python numpy