반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 배열
- junit
- SpringBoot
- html
- Java
- list
- js
- math
- 인텔리제이
- input
- 자바스크립트
- Eclipse
- 테스트자동화
- 문자열
- javascript
- 자바문법
- IntelliJ
- Visual Studio Code
- 스프링부트
- java테스트
- HashMap
- string
- 자바
- 정규식
- 단위테스트
- CSS
- ArrayList
- Array
- junit5
- vscode
Archives
- Today
- Total
어제 오늘 내일
[Python 기초] "가로를 세로로!" 2차원 리스트 전치(Transpose) 완벽 가이드 본문
전치 행렬이란 말 그대로 '행과 열의 인덱스를 서로 맞바꾼 행렬'을 의미합니다. 엑셀에서 표를 복사해서 [행/열 바꿈]으로 붙여넣는 것과 똑같은 작업이라고 생각하시면 됩니다.
1. 가장 파이썬다운 방법:
파이썬 고수들이 가장 즐겨 쓰는 방식입니다. 우리가 앞서 배운 언패킹(*)과 zip() 함수를 결합하면 단 한 줄로 전치가 가능합니다.
📌 예제 코드: zip을 활용한 전치
matrix = [
[1, 2, 3],
[4, 5, 6]
]
# 1. *matrix로 행들을 해체한 뒤
# 2. zip으로 같은 인덱스끼리(열끼리) 묶어줍니다.
transposed = [list(row) for row in zip(*matrix)]
print(transposed)
# 출력: [[1, 4], [2, 5], [3, 6]]
💡 원리 파헤치기:zip(*matrix)는 zip([1, 2, 3], [4, 5, 6])과 같습니다. zip은 각 리스트의 첫 번째 요소인 (1, 4)를 묶고, 그다음 (2, 5), (3, 6)을 차례로 묶어주기 때문에 자연스럽게 행과 열이 바뀝니다.
2. 리스트 컴프리헨션만 사용하기
패키지나 복잡한 함수 없이 순수하게 인덱스 접근 방식으로 전치를 구현하는 방법입니다. 로직을 이해하는 데 아주 좋습니다.
📌 예제 코드: 인덱스 기반 전치
matrix = [
[1, 2, 3],
[4, 5, 6]
]
# 바깥쪽 루프는 '열(column)'을 돌고, 안쪽 루프는 '행(row)'을 돕니다.
# "i번째 열의 값들을 모아서 새로운 행을 만들어라!"
transposed = [[matrix[row][col] for row in range(len(matrix))] for col in range(len(matrix[0]))]
print(transposed)
# 출력: [[1, 4], [2, 5], [3, 6]]
[col] vs matrix[col][row] to demonstrate the logic of matrix transposition]
3. 실무 끝판왕: 넘파이(NumPy) 활용
만약 여러분이 데이터 과학이나 머신러닝을 공부하고 있다면, 사실 위의 방법들을 직접 짜기보다 전용 라이브러리인 NumPy를 사용하는 것이 훨씬 빠르고 강력합니다.
📌 예제 코드: NumPy의 .T 속성
import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 6]])
# .T 속성 하나면 전치 행렬이 완성됩니다.
transposed = matrix.T
print(transposed)
# 출력:
# [[1 4]
# [2 5]
# [3 6]]
📝 핵심 요약
zip(*matrix): 가장 깔끔하고 대중적인 파이썬 표준 방식입니다.- 리스트 컴프리헨션: 라이브러리 없이 인덱스 제어가 필요할 때 유용합니다.
- NumPy: 대규모 행렬 연산이 필요한 실무 환경에서 가장 빠릅니다.
행과 열을 뒤바꾸는 법까지 익히셨으니 이제 2차원 데이터를 다루는 데 있어 두려울 게 없으실 것 같네요!
반응형
'IT > Python' 카테고리의 다른 글
| [Python 실전] "가로 세로 싹 다 더해라!" 2차원 리스트 합계와 평균 구하기 (0) | 2026.05.25 |
|---|---|
| [Python 실전] "좌표를 찍어라!" 2차원 리스트 데이터 위치 찾기 (0) | 2026.05.25 |
| [Python 기초] "표 형태의 데이터도 한 줄로!" 2차원 리스트 컴프리헨션 (0) | 2026.05.24 |
| [Python 기초] "세 줄 코드를 한 줄로!" 리스트 컴프리헨션 완벽 이해 (0) | 2026.05.24 |
| [Python 기초] "따로 노는 리스트를 하나로 묶자!" zip() 함수 활용법 (0) | 2026.05.24 |
Comments
