logo

Transponuj macierz w pojedynczej linii w Pythonie

Transpozycja macierzy w Pythonie oznacza odwrócenie jej po przekątnej, zamieniając wszystkie wiersze w kolumny i wszystkie kolumny w wiersze. Na przykład e macierz taka jak [[1 2] [3 4] [5 6]], która ma 3 wiersze i 2 kolumny, staje się po transpozycji [[1 3 5] [2 4 6]], która ma 2 wiersze i 3 kolumny. Rozumiemy różne metody, aby to skutecznie zrobić.

Korzystanie ze zrozumienia list

Rozumienie listy służy do iteracji po każdym elemencie macierzy. W podanym przykładzie iterujemy po każdym elemencie macierzy (m) w sposób kolumnowy i przypisujemy wynik do macierzy rez, która jest transpozycją m.



usuń pamięć podręczną npm
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) 

Wyjście
[1 3 5] [2 4 6] 

Wyjaśnienie: To wyrażenie tworzy nową macierz, pobierając każdą kolumnę z oryginału jako wiersz w nowej. Zamienia wiersze z kolumnami.

W śpiewaj zip

Python Zip zwraca iterator krotek, gdzie i-ta krotka zawiera i-ty element z każdej sekwencji argumentów lub elementów iterowalnych. W tym przykładzie rozpakowujemy naszą tablicę za pomocą *, a następnie zipujemy ją, aby uzyskać transpozycję.

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) 

Wyjście
(1 4 7 10) (2 5 8 11) (3 6 9 12) 

Wyjaśnienie: Ten kod transponuje macierz M używając zamek(*m) . Znak * rozpakowuje wiersze i zamek błyskawiczny() grupuje elementy kolumnowo. Każda krotka wyjściowa reprezentuje kolumnę z oryginalnej macierzy, skutecznie zamieniając wiersze i kolumny.



Korzystanie z NumPy

Python NumPy to pakiet do przetwarzania tablic ogólnego przeznaczenia, zaprojektowany do wydajnego manipulowania dużymi tablicami wielowymiarowymi.

Przykład 1: Metoda transpose zwraca transponowany widok przekazanej macierzy wielowymiarowej.

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

Wyjście
[[1 4] [2 5] [3 6]] 

Objaśnienie: numpy.transpose() zamień wiersze i kolumny macierzy m. Konwertuje oryginalną macierz złożoną z 2 wierszy i 3 kolumn w jedną, przy czym 3 wiersze i 2 kolumny skutecznie ją transponują.



Przykład 2: Użycie „.T” po zmiennej

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

Wyjście
[[1 4] [2 5] [3 6]] 

Wyjaśnienie: Ten kod używa NumPy do utworzenia tablicy 2D m, a następnie wypisuje jej transpozycję za pomocą .T . The .T atrybut zamienia wiersze i kolumny, przekształcając oryginalną macierz 2x3 w transponowaną macierz 3x2.

Korzystanie z Itertools

Python itertools to moduł udostępniający różne funkcje działające na iteratorach w celu tworzenia złożonych iteratorów. chain() to funkcja, która pobiera serię iteracji i zwraca jedną iterowalną.

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

Wyjście
[[1 4] [2 5] [3 6]] Time taken 9813 ns 

Wyjaśnienie: Najpierw konwertuje macierz na listę list, spłaszcza ją w pojedynczą listę za pomocą metody chain(*M), a następnie odbudowuje transponowaną macierz, przecinając każdy n-ty element.

long do int Java

Powiązane artykuły:

  • Rozumienie listy
  • Itertoole Pythona
  • Zamek w Pythonie
  • łańcuch()
  • krotki
  • Python NumPy