영상처리/OpenCV

배열의 블록 단위 요소에 접근

성혜영 2022. 6. 7. 13:55

단위 요소에 접근해야 할 시 불필요한 연산을 줄이기 위해서는 특정 행이나 열 또는 일정 범위의 하위 영역을 선택하여 접근.

 

import numpy as np



array = np.array([[[1,2],

                [3,4]],

                [[5,6],

                [7,8]]])



for i in array[0]:

    for j in i:

        if j % 2 == 0:

            print(j)

<배열의 블록 단위 요소에 접근하기>

2

4

 

1차원 이상의 배열을 참조한 경우 반환 형식은 ndarray

array[0]은 3차원 ndarray 클래스에서 첫 번째 페이지를 참조함

-> 2차원 배열이 저장되어 있으며 반복문을 통해 접근

for문은 배열의 열에 해당하는 요소에 접근하고 if를 통해 요소가 짝수인지 판별



import numpy as np



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

                [6,7,8,9,10],

                [11,12,13,14,15],

                [16,17,18,19,20]])



print(array[1:3])

print(array[::2])

print(array[2:, 1::2])

<배열의 블록 단위 요소에 접근하기(범위 참조 방식)>

[[ 6  7  8  9 10]

 [11 12 13 14 15]]

[[ 1  2  3  4  5]

 [11 12 13 14 15]]

[[12 14]

 [17 19]]

Numpy 배열에 슬라이싱 사용 가능.

배열[start:end] -> end-1까지의 일부 요소를 잘라 표시

(첫번째 결과) 두 번째 행부터 세 번째 행을 잘라 반환

 

배열[start:end:step] -> start부터 end-1까지 step 간격만큼 배열 표시

콜론(:) 사이 값을 포함하지 않는다면 행 또는 모든 열을 위미

(두번째 결과) 모든 행에서 두 간격만큼 띄워 출력 = array[0:-1:2]

 

배열[start:end:step, start:end:step]

콤마(,)로 행과 열을 구분

(세번째 결과) 세번째 행부터 모든 행을 가져오며, 두번째 열부터 모든 열을 두 간격 띄워 출력

 

'영상처리 > OpenCV' 카테고리의 다른 글

배열 병합 및 분리  (0) 2022.06.07
배열 차원 변형  (0) 2022.06.07
배열의 개별 단위 요소에 접근 방법  (0) 2022.06.07
ndarray 클래스 - N차원 배열  (0) 2022.06.07
OpenCV 이론  (0) 2022.06.07