Átadjon egy mátrixot egyetlen sorban a pythonban
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.
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 )
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.
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 )
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.
Python import 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
Python import 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ó.
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' )
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.
Kapcsolódó cikkek:
- Lista megértés
- Python Itertools
- Python Zip
- lánc()
- tuplák
- Python numpy