HOWTO · Python
Python에서 3D 배열을 선언하는 방법
Python에서 3D 배열을 선언하는 데 사용할 수 있는 3가지 주요 방법, 즉 리스트 컴프리헨션, 곱셈 방법 및 numpy 패키지가 있습니다.
이 페이지의 내용
Python의 3차원 구조는 중첩 리스트 또는 NumPy ndarray일 수 있습니다. 독립적인 Python 리스트에는 중첩 리스트 컴프리헨션을 사용하고, 공유 참조가 허용되는 경우에만 리스트 곱셈을 사용하며, 수치 배열 연산에는 NumPy를 사용하세요.
Python에서 리스트 컴프리헨션을 사용해 3D 리스트 선언하기
중첩 리스트 컴프리헨션은 일반적인 Python 리스트를 만들며, 각 수준마다 새 내부 리스트를 생성합니다. 아래의 리스트 컴프리헨션 구문은 2 × 2 × 2 형태의 0으로 채워진 구조를 만듭니다. 즉, 각각 두 개의 값을 가진 두 행을 포함하는 두 개의 외부 항목이 있습니다.
이 예제를 실행하세요.
n = 2
distance = [[[0 for k in range(n)] for j in range(n)] for i in range(n)]
print(distance)
print((len(distance), len(distance[0]), len(distance[0][0])))
세 개의 중첩 루프는 세 개의 차원에 대응합니다. n을 변경하거나 각 range에 서로 다른 크기를 사용하면 정육면체가 아닌 형태를 만들 수 있습니다.
Python에서 곱셈 방법을 사용해 3D 리스트 선언하기
* 연산자는 리스트를 반복하지만, 그 안에 있는 리스트를 재귀적으로 복사하지는 않습니다. 아래 식에서 반복된 위치는 동일한 내부 리스트를 참조합니다. 따라서 한 위치를 업데이트하면 그 리스트를 공유하는 다른 위치도 변경될 수 있습니다.
n = 2
distance = [[[0] * n] * n] * n
distance[0][0][0] = 7
print(distance)
독립적인 중첩 리스트를 만들려면 [[[0] * n for _ in range(n)] for _ in range(n)]처럼 각 수준마다 컴프리헨션을 사용하세요. 곱셈은 불변 값을 반복하거나 공유 참조가 의도된 경우에 적합합니다. 변경 가능한 중첩 데이터에 대해서는 컴프리헨션과 동등하지 않습니다.
Python에서 NumPy 패키지를 사용해 3D 배열 선언하기
ndarray와 그 축에 대한 수치 연산이 필요할 때는 NumPy를 사용하세요. 이는 외부 패키지입니다. 이 예제를 실행하기 전에 프로젝트에서 사용하는 Python 환경에 pip install numpy로 설치하세요. 형태 튜플은 각 축의 크기를 지정하고, np.zeros는 배열을 0으로 채웁니다. 기본 dtype은 float입니다.
try:
import numpy as np
except ImportError:
print("NumPy is not installed in this Python environment.")
else:
new_array = np.zeros((2, 2, 2))
print(new_array.shape)
print(new_array.dtype)
NumPy 배열의 표시 값은 중첩 리스트와 형식이 다르지만, 차원과 0 초기화 모두 np.zeros에 전달되는 형태에 의해 결정됩니다. 정수 0으로 채우려면 np.zeros((2, 2, 2), dtype=int)처럼 dtype=int를 전달하세요. 자세한 내용은 NumPy 개요와 np.zeros 참조를 확인하세요.