NumPy에서 배열 열 반복 방법
for 루프 사용:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
for col in arr.T:
print(col)
위 코드는 for
루프를 사용하여 배열 arr
의 열을 반복합니다. arr.T
는 배열의 전치 행렬을 만들고, 각 열을 col
변수에 할당합니다.
np.nditer 사용:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
for col in np.nditer(arr, flags=['multi_index']):
print(col)
위 코드는 np.nditer
함수를 사용하여 배열 arr
의 열을 반복합니다. np.nditer
는 다차원 배열을 효율적으로 반복하는 데 유용한 함수입니다. flags=['multi_index']
매개변수는 각 반복에서 각 차원의 인덱스를 제공합니다.
리스트 표현식 사용:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
cols = list(arr.T)
for col in cols:
print(col)
위 코드는 리스트 표현식을 사용하여 배열 arr
의 열을 리스트 cols
에 저장합니다. 그런 다음 for
루프를 사용하여 리스트 cols
의 요소를 반복합니다.
행렬 슬라이싱 사용:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
for i in range(arr.shape[1]):
print(arr[:, i])
위 코드는 행렬 슬라이싱을 사용하여 배열 arr
의 열을 반복합니다. arr[:, i]
는 i
번째 열을 선택합니다.
적절한 방법 선택:
사용할 방법은 상황에 따라 다릅니다.
- 간단한 배열の場合,
for
루프가 가장 명확하고 간결합니다. - 성능이 중요한 경우
np.nditer
를 사용하는 것이 좋습니다. - 배열 열을 리스트로 저장해야 하는 경우 리스트 표현식을 사용하는 것이 좋습니다.
- 특정 열만 필요한 경우 행렬 슬라이싱을 사용하는 것이 좋습니다.
NumPy에서 배열 열 반복 예제 코드
예제 1: for
루프 사용
import numpy as np
# 샘플 배열 생성
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# `for` 루프를 사용하여 열 반복
for col in arr.T:
print(col)
출력:
[1 4 7]
[2 5 8]
[3 6 9]
import numpy as np
# 샘플 배열 생성
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# `np.nditer`를 사용하여 열 반복
for col in np.nditer(arr, flags=['multi_index']):
print(col)
(1, 0) 1
(2, 0) 4
(3, 0) 7
(1, 1) 2
(2, 1) 5
(3, 1) 8
(1, 2) 3
(2, 2) 6
(3, 2) 9
예제 3: 행렬 슬라이싱 사용
import numpy as np
# 샘플 배열 생성
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 행렬 슬라이싱을 사용하여 열 반복
for i in range(arr.shape[1]):
print(arr[:, i])
[1 4 7]
[2 5 8]
[3 6 9]
설명:
- 각 예제에서 샘플 NumPy 배열
arr
을 생성합니다. for
루프,np.nditer
, 행렬 슬라이싱을 사용하여 배열 열을 반복합니다.- 각 반복에서 열의 값을 출력합니다.
주의:
- 이 코드는 Python 3.x 및 NumPy 1.x 이상에서 테스트되었습니다.
- 다른 Python 버전이나 NumPy 버전을 사용하는 경우 코드를 수정해야 할 수도 있습니다.
NumPy에서 배열 열 반복을 위한 대체 방법
zip() 함수 사용:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
for col1, col2, col3 in zip(arr.T):
print(col1, col2, col3)
zip()
함수는 여러 개의 이터레이터를 하나의 이터레이터로 결합합니다.- 이 예제에서는
arr.T
(배열의 전치 행렬)를 사용하여 각 열을 별도의 이터레이터로 변환합니다. zip()
함수는 이 세 개의 이터레이터를 하나의 이터레이터로 결합하여 각 열의 해당 값을 튜플로 반환합니다.for
루프를 사용하여 각 튜플을 반복하고 각 열의 값을 출력합니다.
enumerate() 함수 사용:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
for i, col in enumerate(arr.T):
print(i, col)
enumerate()
함수는 이터레이터의 각 요소를 인덱스와 쌍으로 반환합니다.
사용자 정의 함수 사용:
import numpy as np
def print_cols(arr):
for col in arr.T:
print(col)
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print_cols(arr)
- 이 예제에서는
print_cols
라는 사용자 정의 함수를 정의합니다. - 이 함수는 배열을 입력 매개변수로 받아 배열의 열을 반복하고 출력합니다.
arr
배열을print_cols
함수에 전달하여 열을 출력합니다.
이 외에도 NumPy에서 배열 열을 반복하는 다양한 방법들이 있습니다. 사용 상황에 맞는 가장 적합한 방법을 선택하는 것이 중요합니다.
python loops numpy