본문 바로가기
파이썬/파이썬기본문법

파이썬 numpy 배열 반복(Array Iterating)

by flycoding 2023. 12. 11.
반응형

파이썬 numpy 1-D 배열 반복

반복한다는 것은 요소들을 하나씩 헤쳐 나가는 것을 의미한다.
numpy에서 다차원 배열을 다룰 때, 파이썬의 루프에 기본적인 것을 사용하여 이를 수행할 수 있다.

만약 우리가 1-D 배열로 반복한다면 그것은 각 요소를 하나씩 통과할 것이다.

다음 1-D 배열의 요소를 반복한다:

import numpy as np

arr = np.array([1, 2, 3])
print("arr : \n", arr)

for x in arr:
  print(x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열 루프 예제

 

 

파이썬 numpy 2-D 배열 반복

2-D 배열에서는 모든 행을 지나야한다.

다음 2-D 배열의 요소를 반복한다:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
print("arr : \n", arr)

print("\n\nfor loop 2-D array")
for x in arr:
  print(x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 2-D 배열 루프 예제

 

 

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

2-D 배열의 각 스칼라 요소를 반복한다:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
print("arr : \n", arr)

print("\nfor loop 2-D array")
for x in arr:
  for y in x:
    print(y)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 2-D 배열 루프 예제

 

 

파이썬 numpy 3-D 배열 반복

3-D 배열에서는 모든 2-D 배열을 거친다.

다음 3-D 배열의 요소를 반복한다:

import numpy as np

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

print("\nfor loop 3-D array")
for x in arr:
  print("x represents the 2-D array:")
  print(x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 3-D 배열 루프 예제

 

 

실제 값인 스칼라를 반환하려면 각 차원의 배열을 반복해야 한다.
스칼라까지 반복한다:

import numpy as np

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

print("\nfor loop 3-D array")
for x in arr:
  for y in x:
    for z in y:
      print(z)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 3-D 배열 루프 예제

 

 

파이썬 numpy nditer()을 사용하여 배열 반복

함수 diter()는 매우 기본적인 반복에서 매우 고급의 반복까지 사용할 수 있는 도움이 되는 함수이다. 반복에서 직면하는 몇 가지 기본적인 문제를 해결하므로 예제를 사용하여 살펴보자.

 

각 스칼라 요소에 대한 반복

기본적으로 루프의 경우, 매우 높은 차원을 가진 어레이의 경우 쓰기 어려울 수 있는 루프에 사용해야 하는 어레이의 각 스칼라를 반복한다.

다음 3-D 배열을 통해 반복한다:

import numpy as np

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print("arr : \n", arr)

print("\nfor loop 3-D array")
for x in np.nditer(arr):
  print(x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 3-D 배열 루프 예제

 

 

파이썬 numpy 다양한 데이터 유형으로 배열 반복

op_dtype 인수를 사용하여 반복하는 동안 요소의 데이터 유형을 변경하기 위해 예상되는 데이터 유형을 전달할 수 있다.
NumPy는 (요소가 배열된) 제자리에 있는 요소의 데이터 유형을 변경하지 않으므로 이 작업을 수행하기 위해 추가 공간이 필요하며, 이 공간을 버퍼(buffer)라고 하며, inditer ()에서 활성화하기 위해 flags=['numPy')를 전달합니다.

배열을 문자열로 반복한다:

import numpy as np

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

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

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 루프 nditer, flags='buffered', dtypes 활용 예제

 

파이썬 numpy 다른 스텝 크기로 반복

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


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

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print("arr : \n", arr)

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

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 루프 nditer() step(단계) 활용 예제

 

파이썬 numpy 루프 - ndenumerate()

열거란 어떤 것의 순서 번호를 하나씩 언급하는 것을 의미한다.
반복하는 동안 해당 요소의 인덱스가 필요한 경우가 있으며, 그러한 사용 사례에 대해 ndenumerate() 메소드를 사용할 수 있다.

다음 1D 배열 요소에서 열거:

import numpy as np

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

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

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy  2차원 배열  ndenumerate() 함수 활용 예제

 

 

다음 2D 배열의 요소를 열거한다:

import numpy as np

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

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

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 2차원 배열 ndenumerate() 함수  활용 예제

 

 

지금까지 파이썬 numpy 배열의 순환, 루프에 대해서 살펴보았다.

배열의 1차원, 2차원, 3차원 루프에 대한 개념과 실습을 하였으며 항목을 추출하는 nditer() 함수, flags=['buffered'], 데이터 유형을 변경하는 op_types 인수를 활용하는 방법에 대해서 학습하였다.

꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.

모두 화이팅입니다.!!!

 

출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.

 

반응형

댓글