logo

Prenositi matricu u jednom liniji u Pythonu

Prenošenje matrice u Pythonu znači prebaciti je preko dijagonale pretvarajući sve retke u stupce i sve stupove u redove. Za ExamPL E matrica poput [[1 2] [3 4] [5 6]] koja ima 3 reda, a 2 stupca postaju [[1 3 5] [2 4 6]] koji ima 2 reda i 3 stupca nakon prenošenja. Shvatimo različite metode za to učinkovito.

Korištenje razumijevanja popisa

Razumijevanje popisa koristi se za ponavljanje kroz svaki element u matrici. U danom primjeru ponavljamo kroz svaki element matrice (m) na način stupca-jajor i dodijelimo rezultat Rez matrici koja je transporta m.



java prioritetni red
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) 

Izlaz
[1 3 5] [2 4 6] 

Obrazloženje: Ovaj izraz stvara novu matricu uzimajući svaki stupac iz originala kao redak u novom. Zamijeni redove stupcima.

U Pjevajte patentni zatvarač

Python Zip vraća iterator tuplesa gdje I-Th tuple sadrži I-Th element iz svake od nizova argumentacije ili iterabama. U ovom primjeru otkopčavamo svoj niz koristeći *, a zatim ga zipirate da biste dobili transpozud.

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) 

Izlaz
(1 4 7 10) (2 5 8 11) (3 6 9 12) 

Obrazloženje: Ovaj kôd prenosi matricu m korištenje Zip (*m) . * Raspakira redove i Zip () grupe elementi stupca. Svaki izlazni tuple predstavlja stupac iz izvorne matrice učinkovito izmjenjujući redove i stupce.



Korištenje numpo

Python NumPy je paket za obradu niza opće namjene dizajniran za učinkovito manipuliranje velikim višedimenzionalnim nizovima.

Primjer 1: METODA TRANSPODE vraća prenoseni prikaz prođene višedimenzionalne matrice.

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

Izlaz
[[1 4] [2 5] [3 6]] 

Objašnjenje: numpy.transpose () Zamijenite redove i stupce matrice m. Pretvara originalnu matricu od 2 reda i 3 stupca u jedan s 3 reda i 2 stupca koji ga učinkovito prenose.



Primjer 2: Korištenje '.t' nakon varijable

koliko gradova ima u Sjedinjenim Američkim Državama
Python
import numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T) 

Izlaz
[[1 4] [2 5] [3 6]] 

Obrazloženje: Ovaj kôd koristi numPy za stvaranje 2D polja m, a zatim ispisuje svoj transpose koristeći .T . A .T Atribut zamjenjuje redove i stupce koji pretvaraju originalnu 2x3 matricu u matricu transponirane 3x2.

Korištenje IterTools

Python IterTools je modul koji pruža razne funkcije koje rade na iteratorima za proizvodnju složenih iteratora. Chain () je funkcija koja uzima niz iterabnih i vraća jedan itera.

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

Izlaz
[[1 4] [2 5] [3 6]] Time taken 9813 ns 

Obrazloženje: Prvo pretvara matricu u popis popisa spljoštava ga u jedan popis pomoću lanca (*m), a zatim obnavlja prenosenu matricu narezajući svaki n-tu element.

Povezani članci:

  • Razumijevanje popisa
  • Python IterTools
  • Pithon patent
  • lanac()
  • tuples
  • Python numpy