Python matricos perkėlimas reiškia, kad ji perlenkia ją per įstrižainę, paverčiant visas eilutes kolonomis ir visas stulpelius į eiles. Egzaminui E A matrica, tokia kaip [[1 2] [3 4] [5 6]], kuri turi 3 eilutes ir 2 stulpelius tampa [[1 3 5] [2 4 6]], kuri turi 2 eilutes ir 3 stulpelius po perkėlimo. Supraskime skirtingus metodus, kaip tai padaryti efektyviai.
Naudojant sąrašo supratimą
Sąrašo supratimas naudojamas pakartoti per kiekvieną matricos elementą. Pateiktame pavyzdyje mes kartojame per kiekvieną matricos elementą (m) stulpelio majoro būdu ir priskiriame rezultatą REZ matricai, kuri yra M perkėlimas.
mysql visų vartotojų sąrašasPython
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)
Išvestis
[1 3 5] [2 4 6]
Paaiškinimas: Ši išraiška sukuria naują matricą, paimdama kiekvieną stulpelį iš originalo kaip eilutė naujoje. Tai apsikeičia eilutėmis su stulpeliais.
Į dainuoti užtrauktuką
„Python Zip“ grąžina iteratorių, kuriame iteratorius, kur „i-tht“ yra i-asis elementas iš kiekvienos argumentų sekos ar pakartojimų. Šiame pavyzdyje mes išpakuojame savo masyvą naudodami * ir tada užtraukiame jį, kad gautume perkėlimą.
Pythonm = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row)
Išvestis
(1 4 7 10) (2 5 8 11) (3 6 9 12)
Paaiškinimas: Šis kodas perkelia matricą m naudojant užtrauktukas (*m) . * Išpakuoja eiles ir zip () Grupės elementai stulpeliniai. Kiekvienas išvesties paketas žymi originalios matricos stulpelį, efektyviai keičiantis eilutėmis ir stulpeliais.
Naudojant „Numpy“
„Python Numpy“ yra bendrosios paskirties masyvo apdorojimo paketas, skirtas efektyviai manipuliuoti didelėmis daugialypiais masyvais.
1 pavyzdys: Transponavimo metodas grąžina perkeltą praeinančios daugialypės matricos vaizdą.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
Išvestis
[[1 4] [2 5] [3 6]]
Paaiškinimas: numpy.transpose () Mainų eilutės ir matricos stulpeliai m. Tai paverčia originalią 2 eilučių ir 3 stulpelių matricą į vieną su 3 eilutėmis ir 2 stulpeliais, efektyviai perkeliančiais ją.
2 pavyzdys: Naudojant „.t“ po kintamojo
Pythonimport numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T)
Išvestis
[[1 4] [2 5] [3 6]]
Paaiškinimas: Šis kodas naudoja „Numpy“, kad sukurtų 2D masyvą m .T . .T Atributų apsikeitimo eilutės ir stulpeliai originalią 2x3 matricą paverčia 3x2 perkelta matrica.
Naudojant „iTtertools“
„Python iTtertools“ yra modulis, teikiantis įvairias funkcijas, kurios veikia iteratorius, kad būtų galima gaminti sudėtingus iteratorius. Grandinė () yra funkcija, kuri užima daugybę pakartotų medžiagų ir grąžina vieną pasikartojančią.
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')
Išvestis
[[1 4] [2 5] [3 6]] Time taken 9813 ns
Paaiškinimas: Pirmiausia matricą paverčia sąrašų sąrašu, išlyginusiu jį į vieną sąrašą, naudodama grandinę (*m), tada atstato perkeltą matricą pjaustydama kiekvieną n-asis elementą.
latekso šrifto dydžiai
Susiję straipsniai:
- Sąrašo supratimas
- „Python Itertools“
- „Python Zip“
- grandinė ()
- Ploviai
- Python Numpy