Átadjon egy mátrixot egyetlen sorban a pythonban

A mátrix átültetése a Python -ban azt jelenti, hogy az átlós átmérője az összes sor oszlopokká és az összes oszlopba sorká alakítja. Példaként E A mátrix, mint a [[1 2] [3 4] [5 6]], amelynek 3 sora és 2 oszlopa van, [[1 3 5] [2 4 6]], amely 2 sorban és 3 oszlopban van az átültetés után. Értsük meg a különféle módszereket ennek hatékony elvégzésére.

A lista megértésének használata

A lista megértését a mátrix minden elemén keresztül történő iterációval használják. A megadott példában oszlopmátus módon iteráljuk a mátrix minden elemét (m), és hozzárendeljük az eredményt a REZ mátrixhoz, amely az M átültetése.

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  )   

Kibocsátás
[1 3 5] [2 4 6]  

Magyarázat: Ez a kifejezés új mátrixot hoz létre, ha az egyes oszlopokat az eredetiből az új sorba veszi. A sorokat oszlopokkal cseréli.

-Ben Énekelj zipt

A Python ZIP egy iterátort ad vissza, ahol az i-th tuple tartalmazza az I-Thing elemet az összes argumentum szekvenciából vagy iterable-ból. Ebben a példában kibontjuk a tömbünket a * használatával, majd cipzárral az átültetéshez.

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  )   

Kibocsátás
(1 4 7 10) (2 5 8 11) (3 6 9 12)  

Magyarázat: Ez a kód áttereli a mátrixot m felhasználás ZIP (*M) - A * kicsomagolja a sorokat és zip () csoportok elemek oszlop-szempontból. Minden kimeneti tuple az eredeti mátrixból származó oszlopot képviseli, amely hatékonyan cseréli a sorokat és az oszlopokat.

Numpy használatával

A Python Numpy egy általános célú tömbfeldolgozó csomag, amelynek célja a nagy többdimenziós tömbök hatékony manipulálása.

1. példa: Az átültetési módszer visszaadja az átültetett többdimenziós mátrix átültetett nézetet.

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

Kibocsátás
[[1 4] [2 5] [3 6]]  

Magyarázat: numpy.Transpose () Cserélje ki a mátrix sorát és oszlopait. A 2 sor és 3 oszlop eredeti mátrixát egyre konvertálja 3 sorral és 2 oszlopmal, amely hatékonyan átülteti azt.

2. példa: '.T' használata a változó után

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

Kibocsátás
[[1 4] [2 5] [3 6]]  

Magyarázat: Ez a kód a numpy -t használja egy 2D tömb létrehozásához, majd nyomtatja át az átültetését .T - A .T Attribútumcsere sorok és oszlopok, amelyek az eredeti 2x3 mátrixot egy 3x2 -es átültetett mátrixmá alakítják.

Itertools használata

A Python Itertools egy olyan modul, amely különféle funkciókat biztosít, amelyek iterátorokon működnek, hogy összetett iterátorokat állítsanak elő. A lánc () egy olyan függvény, amely egy sor iterable -t vesz, és egy iterálható.

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

Kibocsátás
[[1 4] [2 5] [3 6]] Time taken 9813 ns  

Magyarázat: Először átalakítja a mátrixot a listák listájává, a lánc (*m) használatával egyetlen listává, majd újjáépíti az átültetett mátrixot, minden n-thth elem szeletelésével.

Kapcsolódó cikkek:

  • Lista megértés
  • Python Itertools
  • Python Zip
  • lánc()
  • tuplák
  • Python numpy