logo

Transponēt matricu vienā rindā Python

Matricas transponēšana Python nozīmē to pārlaižot pa diagonāli, visas rindas pārvēršot kolonnās un visas kolonnas rindās. EKSTPRAKSTS E a matrica, piemēram, [[1 2] [3 4] [5 6]], kurai ir 3 rindas un 2 kolonnas, kļūst par [[1 3 5] [2 4 6]], kurai ir 2 rindas un 3 kolonnas pēc transponēšanas. Izprotim dažādas metodes, kā to izdarīt efektīvi.

Izmantojot saraksta izpratni

Saraksta izpratne tiek izmantota, lai atkārtotu katru matricas elementu. Dotajā piemērā mēs atkārtojamies caur katru matricas (m) elementu kolonnas major veidā un piešķiram rezultātu Rez matricai, kas ir M transponēšana.



in.next java
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) 

Izvade
[1 3 5] [2 4 6] 

Paskaidrojums: Šī izteiksme rada jaunu matricu, paņemot katru kolonnu no oriģināla kā rindu jaunajā. Tas maina rindas ar kolonnām.

Iekšā dziedāt rāvējslēdzēju

Python Zip atgriež topples iteratoru, kur I-Th Tuple satur I-Th elementu no katras argumentu sekvences vai iterables. Šajā piemērā mēs izslēdzam savu masīvu, izmantojot * un pēc tam to rāvējslēdzēju, lai iegūtu transponēšanu.

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) 

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

Paskaidrojums: Šis kods transponē matricu m lietošana Zip (*m) Apvidū * Izpako rindas un zip () grupu elementi kolonnā. Katrs izvades tuple apzīmē kolonnu no oriģinālās matricas, efektīvi apmainot rindas un kolonnas.



Izmantojot Numpy

Python Numpy ir vispārējas nozīmes masīva apstrādes pakete, kas paredzēta, lai efektīvi manipulētu ar lieliem daudzdimensionāliem blokiem.

1. piemērs: Transpozācijas metode atgriež transponēto daudzdimensionālās matricas transponēto skatu.

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

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

Paskaidrojums: numpy.transpose () Matricas rindas un kolonnas m. Tas pārveido oriģinālo matricu 2 rindās un 3 kolonnās vienā ar 3 rindām un 2 kolonnām to efektīvi transponē.



2. piemērs: Izmantojot '.t' pēc mainīgā

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

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

Paskaidrojums: Šis kods izmanto Numpy, lai izveidotu 2D masīvu m, pēc tam izdrukā savu transponēšanu, izmantojot .T Apvidū Līdz .T Atribūtu mijmaiņas rindas un kolonnas, kas konvertē oriģinālo 2x3 matricu par 3x2 transponēto matricu.

Izmantojot itertools

Python itertools ir modulis, kas nodrošina dažādas funkcijas, kas darbojas ar iteratoriem, lai iegūtu sarežģītus iteratorus. Ķēde () ir funkcija, kas uzņem virkni iterable un atgriež vienu itable.

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

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

Paskaidrojums: Tas vispirms pārveido matricu par sarakstu sarakstu, kas to sadala vienā sarakstā, izmantojot ķēdi (*m), pēc tam atjauno transponēto matricu, sagriežot katru N-Th elementu.

Saistītie raksti:

  • Saraksta izpratne
  • Python itertools
  • Pitona rāvējslēdzējs
  • ķēde ()
  • lāpstiņas
  • Python Numpy