Преноси матрицу у појединачном линији у Питхон-у
Преношење матрице у Питхон-у значи да га преврне преко његове дијагонале који прелазе све редове у ступце и све ступце у редове. За пример е матрица попут [[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
Објашњење: Прво претвори матрицу на листу листа који га лепршава у једну листу користећи ланац (* м), а затим обновите транспортну матрицу резањем сваког н-тх елемента.
Сродни чланци:
- Схватање на листи
- Питхон Итертоолс
- Питхон зип
- Ланац ()
- турес
- Питхон Нумпи