Python에서 행렬을 전치한다는 것은 행렬을 대각선으로 뒤집어 모든 행을 열로, 모든 열을 행으로 바꾸는 것을 의미합니다. 예를 들어 3개의 행과 2개의 열을 갖는 [[1 2] [3 4] [5 6]]과 같은 행렬은 전치 후에 2개의 행과 3개의 열을 갖는 [[1 3 5] [2 4 6]]이 됩니다. 이를 효율적으로 수행하는 다양한 방법을 이해해 봅시다.
목록 이해 사용
목록 이해는 행렬의 각 요소를 반복하는 데 사용됩니다. 주어진 예에서 우리는 행렬(m)의 각 요소를 열 주요 방식으로 반복하고 그 결과를 m의 전치인 rez 행렬에 할당합니다.
모니터 크기를 결정하는 방법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)
산출
[1 3 5] [2 4 6]
설명: 이 표현식은 원본의 각 열을 새 행렬의 행으로 가져와 새 행렬을 만듭니다. 행을 열로 바꿉니다.
안에 노래 부르기
Python Zip은 i번째 튜플이 각 인수 시퀀스 또는 반복 가능 항목의 i번째 요소를 포함하는 튜플의 반복자를 반환합니다. 이 예에서는 *를 사용하여 배열의 압축을 푼 다음 이를 압축하여 전치를 얻습니다.
Pythonm = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row)
산출
(1 4 7 10) (2 5 8 11) (3 6 9 12)
설명: 이 코드는 행렬을 전치합니다 중 사용하여 우편번호(*m) . *는 행의 압축을 풀고 지퍼() 요소를 열 단위로 그룹화합니다. 각 출력 튜플은 행과 열을 효과적으로 교환하는 원본 행렬의 열을 나타냅니다.
NumPy 사용
Python NumPy는 대규모 다차원 배열을 효율적으로 조작하도록 설계된 범용 배열 처리 패키지입니다.
예시 1: Transpose 메서드는 전달된 다차원 행렬의 전치된 뷰를 반환합니다.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
산출
[[1 4] [2 5] [3 6]]
설명: numpy.transpose() 행렬 m의 행과 열을 바꿉니다. 2행 3열의 원래 행렬을 효과적으로 전치하는 3행 2열 행렬로 변환합니다.
예 2: 변수 뒤에 '.T' 사용
Pythonimport numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T)
산출
[[1 4] [2 5] [3 6]]
설명: 이 코드는 NumPy를 사용하여 2D 배열 m을 만든 다음 다음을 사용하여 전치를 인쇄합니다. .티 . 그만큼 .티 속성은 원래 2x3 행렬을 3x2 전치 행렬로 변환하여 행과 열을 바꿉니다.
Itertools 사용
Python itertools는 반복자에서 작동하여 복잡한 반복자를 생성하는 다양한 기능을 제공하는 모듈입니다. chain()은 일련의 반복 가능 항목을 가져와 하나의 반복 가능 항목을 반환하는 함수입니다.
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')
산출
[[1 4] [2 5] [3 6]] Time taken 9813 ns
설명: 먼저 행렬을 목록 목록으로 변환하고 chain(*M)을 사용하여 단일 목록으로 평면화한 다음 모든 n번째 요소를 분할하여 전치된 행렬을 다시 작성합니다.
Powershell 보다 크거나 같음
관련 기사:
- 목록 이해
- Python itertools
- 파이썬 우편
- 체인()
- 튜플
- 파이썬 NumPy