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