logo

Трансирайте матрица в единична линия в Python

Транспонирането на матрица в Python означава да го прелитате върху диагоналното му превръщане на всички редове в колони и всички колони в редове. За изпит E Матрица като [[1 2] [3 4] [5 6]], която има 3 реда и 2 колони, става [[1 3 5] [2 4 6]], който има 2 реда и 3 колони след транспортиране. Нека разберем различни методи, за да направим това ефективно.

Използване на разбиране на списъка

Разбирането на списъка се използва за повторение чрез всеки елемент в матрицата. В дадения пример ние повтаряме всеки елемент от матрица (m) по мащаб на колона и присвояваме резултата на матрицата на Rez, която е транспонирането на m.



iphone emojis на android
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] 

Обяснение: Този израз създава нова матрица, като взема всяка колона от оригинала като ред в новия. Той разменя редове с колони.

В Пейте Zip

Python Zip връща итератор на кортежи, където I-TUPLE съдържа I-тия елемент от всяка от последователностите на аргумента или Iterable. В този пример ние разархивираме нашия масив, използвайки * и след това го цип, за да получим транспонирането.

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) 

Обяснение: Този код транспонира матрицата m Използване zip (*m) . * Разопакова редовете и zip () Групи елементи на колона. Всеки изход Tuple представлява колона от оригиналната матрица, ефективно разменяща се редове и колони.



Използване на numpy

Python Numpy е пакет за обработка на масиви с общо предназначение, предназначен да манипулира големи многоизмерни масиви.

Пример 1: Методът Transpose връща транспониран изглед на приетата многоизмерна матрица.

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

Изход
[[1 4] [2 5] [3 6]] 

Обяснение: numpy.transpose () Разменяйте редове и колони от матрицата m. Той преобразува оригиналната матрица от 2 реда и 3 колони в един с 3 реда и 2 колони, ефективно я транспонира.



Пример 2: Използване на '.t' след променливата

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

Изход
[[1 4] [2 5] [3 6]] 

Обяснение: Този код използва numpy за създаване .T . The .T Атрибути Swaps Rows и колони, преобразуващи оригиналната 2x3 матрица в 3x2 транспонирана матрица.

Използване на itertools

Python Itertools е модул, който предоставя различни функции, които работят върху итератори за производство на сложни итератори. Chain () е функция, която приема серия от Iterables и връща един итен.

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 

Обяснение: Първо преобразува матрицата в списък от списъци с изравняване в един списък с помощта на верига (*m), след което възстановява транспонираната матрица, като нарязва всеки n-ти елемент.

fizzbuzz java

Свързани статии:

  • Разбиране на списъка
  • Python Itertools
  • Python Zip
  • верига ()
  • кортежи
  • Python numpy