목차
배열 반복 정의/방법
nditer() 함수 이용한 배열 반복
nditer() 함수 응용 - 다른 데이터타입 가진 배열 반복
다른 step 크기로 배열 반복 (= 일부 요소만 접근)
ndenumerate() 함수 - 배열 반복 시 색인 출력
배열 반복 정의/방법
※ 반복 : 배열의 각 요소에 접근 의미.
※ 파이썬의 for 반복문 이용.
※ n 차원 배열 반복 경우, n-1 차원이 for 반복문을 각각 통과.
※ 다차원 배열의 각각의 개별 요소 접근 방법 2가지.
방법1. 차원 수 만큼의 중첩 for문 이용해 접근.
방법2. reshape(-1) 메서드로 평탄화 (= 1차원 배열 생성) 후 접근.
방법3. nditer() 함수로 원본 배열에 바로 접근. (★ 권장 방법)
[1차원 배열]
import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
print(x)
결과값:
1
2
3
[2차원 배열]
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
print(x)
결과값:
[1 2 3]
[4 5 6]
[2차원 배열 - 각 요소 접근] 2중 중첩 for문 이용.
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
for y in x:
print(y)
결과값:
1
2
3
4
5
6
[2차원 배열 - 각 요소 접근] 평탄화 방법 이용.
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
for x in newarr:
print(x)
결과값:
1
2
3
4
5
6
[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)
결과값:
[[1 2 3]
[4 5 6]]
[[ 7 8 9]
[10 11 12]]
[3차원 배열 - 각 요소 접근] ★ 3중 중첩 for문 이용.
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)
결과값:
1
2
3
4
5
6
7
8
9
10
11
12
[3차원 배열 - 각 요소 접근] ★ 평탄화 방법 이용.
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
newarr = arr.reshape(-1)
for x in newarr:
print(x)
결과값:
1
2
3
4
5
6
7
8
9
10
11
12
nditer() 함수 이용한 배열 반복
다차원 배열의 각 요소 (= 스칼라)에 접근 가능.
[예제]
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
print(x)
결과값:
1
2
3
4
5
6
7
8
nditer() 함수 응용 - 다른 데이터타입 가진 배열 반복
[구문]
np .nditer(arr , flags=['buffered'], op_dtypes=['data_type '])
[매개변수]
arr
필수. 배열flags=['buffered']
선택. 데이터타입 변환을 위해 필요한 버퍼 공간.
op_dtypes=[' data_type ']
선택. 변환하고자 하는 데이터 타입 .
[예제] (정수 타입 → 문자열 타입) 변환 후, 접근.
import numpy as np
arr = np.array([1, 2, 3])
for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
print(x)
결과값:
b'1'
b'2'
b'3'
다른 step 크기로 배열 반복 (= 일부 요소만 접근)
배열자르기 (= 일부 배열 선택) 과 반복 결합해 특정 요소 접근.
[예제]
1차원의 각 차원에 대해 색인 1씩 증가 후,
2차원의 각 요소를 색인 2씩 증가해 선택.
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
print(x)
결과값:
1
3
5
7
ndenumerate() 함수 - 배열 반복 시 색인 출력
배열 반복 시, 각 요소의 색인 (idx)도 함께 접근.
[1차원 배열]
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in np.ndenumerate(arr):
print(idx, x)
결과값:
(0,) 1
(1,) 2
(2,) 3
[2차원 배열]
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)
결과값:
(0, 0) 1
(0, 1) 2
(0, 2) 3
(0, 3) 4
(1, 0) 5
(1, 1) 6
(1, 2) 7
(1, 3) 8
주소 복사
랜덤 이동
최신댓글