Преношење матрице у Питхон-у значи да га преврне преко његове дијагонале који прелазе све редове у ступце и све ступце у редове. За пример е матрица попут [[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]
Објашњење: Овај израз ствара нову матрицу узимајући сваку колону са оригинала као ред у новом. Замењује се редове стубовима.
У певати зип
Питхон Зип враћа итератору Труплеса где и-Тх Тупле садржи И-ТХ елемент из сваке од аргументираних секвенци или понављања. У овом примеру разбијемо свој низ помоћу *, а затим је затегнете да бисте добили пренос.
Pythonm = [(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: Метода преноса враћа преносни приказ пролазеће вишедимензионалне матрице.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
Излаз
[[1 4] [2 5] [3 6]]
Објашњење: нумпи.Транспосе () Замените редове и стубове матрице м. Претвара оригиналну матрицу од 2 реда и 3 колоне у један са 3 реда и 2 колоне ефективно га преносе.
Пример 2: Користећи '.т' након променљиве
Pythonimport 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 транспонирану матрицу.
Коришћење Итертоолс-а
Питхон Итертоолс је модул који пружа различите функције које раде на итераторима да производе сложене итераторе. Ланац () је функција која узима низу понављања и враћа се понашања.
Pythonfrom 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
Објашњење: Прво претвори матрицу на листу листа који га лепршава у једну листу користећи ланац (* м), а затим обновите транспортну матрицу резањем сваког н-тх елемента.
јава тхров изузетак
Сродни чланци:
- Схватање на листи
- Питхон Итертоолс
- Питхон зип
- Ланац ()
- турес
- Питхон Нумпи