Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 튜플을 2차원 테이블로 변환하는 방법 완벽 가이드

파이썬에서 1차원 튜플을 2차원 테이블(행렬) 형태로 변환해야 하는 경우가 종종 있습니다. 예를 들어, 1부터 9까지의 숫자를 담은 튜플을 3×3 크기의 표로 만들고 싶다면 두 가지 대표적인 방법을 사용할 수 있습니다.

방법 1: NumPy의 reshape 활용하기

NumPy와 같은 수치 계산 라이브러리가 설치되어 있다면 reshape 메서드를 사용하는 것이 가장 간단하고 효율적입니다. 튜플을 배열로 변환한 뒤 원하는 차원으로 재구성하면 됩니다.

import numpy
data = numpy.array(range(1, 10))
data = data.reshape([3, 3])
print(data)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

참고: NumPy의 reshape는 원본 배열을 수정하지 않고 새로운 형태의 배열을 반환하므로, 결과를 변수에 다시 할당해야 한다는 점에 유의하세요.

방법 2: 순수 파이썬 리스트 컴프리헨션 활용하기

외부 라이브러리 없이 순수 파이썬만으로 처리하고 싶다면 슬라이싱과 제너레이터 표현식(또는 리스트 컴프리헨션)을 조합할 수 있습니다. 일정한 간격으로 데이터를 잘라내어 새로운 튜플을 구성하는 방식입니다.

data = tuple(range(1, 10))
table = tuple(data[n:n+3] for n in range(0, len(data), 3))
print(table)

실행 결과는 다음과 같습니다.

((1, 2, 3), (4, 5, 6), (7, 8, 9))

여기서 range(0, len(data), 3)는 시작 인덱스를 0, 3, 6으로 생성하고, 각 위치에서 data[n:n+3]으로 3개씩 잘라내어 행(row)을 만듭니다. 파이썬 3에서는 xrangerange로 통합되었으므로 위와 같이 작성하면 됩니다.

어떤 방법을 선택해야 할까?

  • NumPy 사용: 대용량 수치 데이터를 다루거나 이후 행렬 연산이 필요하다면 성능 면에서 유리합니다.
  • 순수 파이썬: 의존성 없이 간단한 변환만 필요하거나, 튜플 구조를 그대로 유지하고 싶을 때 적합합니다.

두 방법 모두 열 개수(여기서는 3)만 변경하면 임의의 크기로 확장할 수 있으므로, 상황에 맞게 활용해 보세요.