파이썬 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 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) |
위의 코드를 실행하면 아래 그림과 같다.
실제 값인 스칼라를 반환하려면 각 차원의 배열을 반복해야 한다.
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 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) |
위의 코드를 실행하면 아래 그림과 같다.
실제 값인 스칼라를 반환하려면 각 차원의 배열을 반복해야 한다.
스칼라까지 반복한다:
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 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 다양한 데이터 유형으로 배열 반복
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 다른 스텝 크기로 반복
필터링과 반복을 사용할 수 있다.
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 루프 - 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) |
위의 코드를 실행하면 아래 그림과 같다.
다음 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 배열의 순환, 루프에 대해서 살펴보았다.
배열의 1차원, 2차원, 3차원 루프에 대한 개념과 실습을 하였으며 항목을 추출하는 nditer() 함수, flags=['buffered'], 데이터 유형을 변경하는 op_types 인수를 활용하는 방법에 대해서 학습하였다.
꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.
모두 화이팅입니다.!!!
출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.
'파이썬 > 파이썬기본문법' 카테고리의 다른 글
파이썬 numpy 배열 분할(splitting) (0) | 2023.12.14 |
---|---|
파이썬 numpy 배열 결합(Join) (0) | 2023.12.13 |
파이썬 numpy 배열 재구성 (1) | 2023.12.10 |
파이썬 numpy 배열 모양(Array shape) (0) | 2023.12.09 |
파이썬 Numpy 배열 복사 vs 보기(Copy vs View) (1) | 2023.12.08 |
댓글