A mátrix átültetése a Python -ban azt jelenti, hogy az átlós átmérője az összes sor oszlopokká és az összes oszlopba sorká alakítja. Példaként E A mátrix, mint a [[1 2] [3 4] [5 6]], amelynek 3 sora és 2 oszlopa van, [[1 3 5] [2 4 6]], amely 2 sorban és 3 oszlopban van az átültetés után. Értsük meg a különféle módszereket ennek hatékony elvégzésére.
A lista megértésének használata
A lista megértését a mátrix minden elemén keresztül történő iterációval használják. A megadott példában oszlopmátus módon iteráljuk a mátrix minden elemét (m), és hozzárendeljük az eredményt a REZ mátrixhoz, amely az M átültetése.
az egér görgője nem gördül megfelelőenPython
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)
Kibocsátás
[1 3 5] [2 4 6]
Magyarázat: Ez a kifejezés új mátrixot hoz létre, ha az egyes oszlopokat az eredetiből az új sorba veszi. A sorokat oszlopokkal cseréli.
-Ben Énekelj zipt
A Python ZIP egy iterátort ad vissza, ahol az i-th tuple tartalmazza az I-Thing elemet az összes argumentum szekvenciából vagy iterable-ból. Ebben a példában kibontjuk a tömbünket a * használatával, majd cipzárral az átültetéshez.
Pythonm = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row)
Kibocsátás
(1 4 7 10) (2 5 8 11) (3 6 9 12)
Magyarázat: Ez a kód áttereli a mátrixot m felhasználás ZIP (*M) - A * kicsomagolja a sorokat és zip () csoportok elemek oszlop-szempontból. Minden kimeneti tuple az eredeti mátrixból származó oszlopot képviseli, amely hatékonyan cseréli a sorokat és az oszlopokat.
Numpy használatával
A Python Numpy egy általános célú tömbfeldolgozó csomag, amelynek célja a nagy többdimenziós tömbök hatékony manipulálása.
1. példa: Az átültetési módszer visszaadja az átültetett többdimenziós mátrix átültetett nézetet.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
Kibocsátás
[[1 4] [2 5] [3 6]]
Magyarázat: numpy.Transpose () Cserélje ki a mátrix sorát és oszlopait. A 2 sor és 3 oszlop eredeti mátrixát egyre konvertálja 3 sorral és 2 oszlopmal, amely hatékonyan átülteti azt.
2. példa: '.T' használata a változó után
Pythonimport numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T)
Kibocsátás
[[1 4] [2 5] [3 6]]
Magyarázat: Ez a kód a numpy -t használja egy 2D tömb létrehozásához, majd nyomtatja át az átültetését .T - A .T Attribútumcsere sorok és oszlopok, amelyek az eredeti 2x3 mátrixot egy 3x2 -es átültetett mátrixmá alakítják.
Itertools használata
A Python Itertools egy olyan modul, amely különféle funkciókat biztosít, amelyek iterátorokon működnek, hogy összetett iterátorokat állítsanak elő. A lánc () egy olyan függvény, amely egy sor iterable -t vesz, és egy iterálható.
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')
Kibocsátás
[[1 4] [2 5] [3 6]] Time taken 9813 ns
Magyarázat: Először átalakítja a mátrixot a listák listájává, a lánc (*m) használatával egyetlen listává, majd újjáépíti az átültetett mátrixot, minden n-thth elem szeletelésével.
tömbök java-ban
Kapcsolódó cikkek:
- Lista megértés
- Python Itertools
- Python Zip
- lánc()
- tuplák
- Python numpy