Python

[numpy] PY - NumPy Array Iterating (배열 반복) ★

11703
목차
  1. 배열 반복 정의/방법
  2. nditer() 함수 이용한 배열 반복
  3. nditer() 함수 응용 - 다른 데이터타입 가진 배열 반복
  4. 다른 step 크기로 배열 반복 (= 일부 요소만 접근)
  5. 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


[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 



분류 제목
set Python - set.isdisjoint() 메서드 - 두 Set의 공통요소 유무 체크. (= isdisj…
set Python - set.issubset() 메서드 - 서브 Set인지 체크. (= issubset메서드 = …
set Python - set.issuperset() 메서드 - 수퍼 Set인지 체크. (= issuperset메서…
set Python - set.pop() 메서드 ★ - Set에서 요소 랜덤 제거 후, 제거된 요소 반환. (= p…
set Python - set.remove() 메서드 ★ - Set에서 지정요소 제거. (= remove메서드 = …
set Python - set.symmetric_difference() 메서드 - Set의 공통요소 제외한 결합 S…
set Python - set.symmetric_difference_update() 메서드 - Set의 공통요소 제…
set Python - set.union() 메서드 ★ - 중복 시 한번만 포함해 Set 결합. (=셋 합치기 u…
set Python - set.update() 메서드 - 두 Set을 결합해 기존 set을 수정. (= update…
file Python - File Method - 파일메서드 종류
file Python - close() 메서드 ★★★ - 열린 파일 닫기. (= close메서드 = 클로즈 메서드)
file Python - detach() 메서드 △ - 버퍼에서 분리된 원시 스트림 반환. (= detach메서드 =…
file Python - fileno() 메서드 - 스트림의 파일 설명자를 숫자로 반환. (= fileno메서드 = …
file Python - flush() 메서드 ★ - 버퍼 비우기/정리. (= flush메서드 = 플러시메서드)
file Python - isatty() 메서드 - 파일 스트림이 상호대화형인지 체크. (= isatty메서드)
17/32
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티
웹유틸
회원센터
홈짱닷컴 PC버전 로그인