logo

Á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.



az egér görgője nem gördül megfelelően
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.

tömbök java-ban

Kapcsolódó cikkek:

  • Lista megértés
  • Python Itertools
  • Python Zip
  • lánc()
  • tuplák
  • Python numpy