NumPy 배열 반복


배열 반복

반복은 요소를 하나씩 통과하는 것을 의미합니다.

numpy에서 다차원 배열을 다룰 때 for파이썬의 기본 루프를 사용하여 이를 수행할 수 있습니다.

1차원 배열을 반복하면 각 요소를 하나씩 통과합니다.

예시

다음 1차원 배열의 요소를 반복합니다.

import numpy as np

arr = np.array([1, 2, 3])

for x in arr:
  print(x)

2차원 배열 반복하기

2차원 배열에서는 모든 행을 통과합니다.

예시

다음 2차원 배열의 요소를 반복합니다.

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  print(x)

n -D 배열 을 반복하면 n-1 차원을 하나씩 통과합니다.

실제 값인 스칼라를 반환하려면 각 차원에서 배열을 반복해야 합니다.

예시

2차원 배열의 각 스칼라 요소에 대해 반복합니다.

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  for y in x:
    print(y)


3차원 배열 반복하기

3차원 배열에서는 모든 2차원 배열을 통과합니다.

예시

다음 3차원 배열의 요소를 반복합니다.

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

for x in arr:
  print(x)

실제 값인 스칼라를 반환하려면 각 차원에서 배열을 반복해야 합니다.

예시

스칼라까지 반복합니다.

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

for x in arr:
  for y in x:
    for z in y:
      print(z)

nditer()를 사용하여 배열 반복하기

이 함수 nditer()는 아주 기본적인 반복부터 매우 고급 반복까지 사용할 수 있는 도우미 함수입니다. 반복 작업에서 직면하는 몇 가지 기본 문제를 해결하고 예제를 통해 살펴보겠습니다.

각 스칼라 요소에 대한 반복

기본 루프에서 배열의 각 스칼라를 반복 하는 것은 차원이 매우 높은 배열에 대해 작성하기 어려울 수 있는 n개의for 루프 를 사용해야 합니다. for

예시

다음 3차원 배열을 반복합니다.

import numpy as np

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

for x in np.nditer(arr):
  print(x)

다른 데이터 유형으로 배열 반복하기

op_dtypes반복하는 동안 요소의 데이터 유형을 변경하기 위해 인수 를 사용 하고 예상 데이터 유형을 전달할 수 있습니다.

NumPy는 요소의 데이터 유형을 제자리(요소가 배열에 있는 위치)에서 변경하지 않으므로 이 작업을 수행하기 위해 다른 공간이 필요합니다. 추가 공간을 버퍼라고 하며, 이를 활성화하기 nditer()위해 flags=['buffered'].

예시

배열을 문자열로 반복합니다.

import numpy as np

arr = np.array([1, 2, 3])

for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
  print(x)

다른 단계 크기로 반복

필터링과 반복을 사용할 수 있습니다.

예시

1개의 요소를 건너뛰는 2D 배열의 모든 스칼라 요소를 반복합니다.

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

for x in np.nditer(arr[:, ::2]):
  print(x)

ndenumerate()를 사용한 열거 반복

열거는 어떤 것의 순서 번호를 하나씩 언급하는 것을 의미합니다.

때때로 우리는 반복하는 동안 요소의 해당 인덱스가 필요합니다. 이 ndenumerate()방법은 이러한 사용 사례에 사용할 수 있습니다.

예시

다음 1D 배열 요소를 열거합니다.

import numpy as np

arr = np.array([1, 2, 3])

for idx, x in np.ndenumerate(arr):
  print(idx, x)

예시

다음 2D 배열 요소를 열거합니다.

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

for idx, x in np.ndenumerate(arr):
  print(idx, x)