Преноси матрицу у појединачном линији у Питхон-у

Преношење матрице у Питхон-у значи да га преврне преко његове дијагонале који прелазе све редове у ступце и све ступце у редове. За пример е матрица попут [[1 2] [3] [3] [5]] која има 3 реда и 2 колоне постаје [[1 5] [2 4 6]] који има 2 реда и 3 колоне након преноса. Хајде да разумемо различите методе да то ефикасно радимо.

Коришћење схватања листе

Схватање листе користи се за понављање сваког елемента у матрици. У датом примеру који је прошао кроз сваки елемент матрице (м) на колони-главни начин и додељује резултат рез матрици који је преносан м.

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  )   

Излаз
[1 3 5] [2 4 6]  

Објашњење: Овај израз ствара нову матрицу узимајући сваку колону са оригинала као ред у новом. Замењује се редове стубовима.

У певати зип

Питхон Зип враћа итератору Труплеса где и-Тх Тупле садржи И-ТХ елемент из сваке од аргументираних секвенци или понављања. У овом примеру разбијемо свој низ помоћу *, а затим је затегнете да бисте добили пренос.

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  )   

Излаз
(1 4 7 10) (2 5 8 11) (3 6 9 12)  

Објашњење: Овај код преноси матрицу м коришћење зип (* м) . * Распакује редове и Зип () Групе Елементс Ступац-мудри. Сваки излазни топис представља колону са оригиналне матрице ефикасно замјене редове и ступца.

Коришћење нумпи

Питхон Нумпи је пакет за обраду опште намене који је дизајниран да ефикасно манипулише великим вишедимензионалним низовима.

Пример 1: Метода преноса враћа преносни приказ пролазеће вишедимензионалне матрице.

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

Излаз
[[1 4] [2 5] [3 6]]  

Објашњење: нумпи.Транспосе () Замените редове и стубове матрице м. Претвара оригиналну матрицу од 2 реда и 3 колоне у један са 3 реда и 2 колоне ефективно га преносе.

Пример 2: Користећи '.т' након променљиве

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

Излаз
[[1 4] [2 5] [3 6]]  

Објашњење: Овај код користи нумпи да би се створила 2Д арраи м затим штампа своје транспорт користећи употребу . Тхе Атрибуте замјене замјене и ступци претварање оригиналне 2к3 матрице у 3к2 транспонирану матрицу.

Коришћење Итертоолс-а

Питхон Итертоолс је модул који пружа различите функције које раде на итераторима да производе сложене итераторе. Ланац () је функција која узима низу понављања и враћа се понашања.

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

Излаз
[[1 4] [2 5] [3 6]] Time taken 9813 ns  

Објашњење: Прво претвори матрицу на листу листа који га лепршава у једну листу користећи ланац (* м), а затим обновите транспортну матрицу резањем сваког н-тх елемента.

Сродни чланци:

  • Схватање на листи
  • Питхон Итертоолс
  • Питхон зип
  • Ланац ()
  • турес
  • Питхон Нумпи