logo

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

Преношење матрице у Питхон-у значи да га преврне преко његове дијагонале који прелазе све редове у ступце и све ступце у редове. За пример е матрица попут [[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 

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

јава тхров изузетак

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

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