여러 배열을 병합한다면 새로운 축을 따라 배열을 연결하게 됨
배열을 병합할 때 입력 배열의 형태가 동일해야 함 즉, 페이지, 행, 열의 모든 모양이 같아야 함
stack() : 서로 다른 배열 병합 -> axis 매개 변수를 사용해 새로운 축을 설정
axis=0 : 첫번째 차원을 기준으로 삽입
axis=-1 : 마지막 번째 차원을 기준으로 삽입
축은 이어붙일 차원의 범위를 넘어갈 수 없음
import numpy as np
array1 = np.arange(6).reshape(2,3)
array2 = np.arange(6, 12).reshape(2,3)
merge1 = np.stack([array1, array2], axis=0)
merge2 = np.stack([array1, array2], axis=1)
print(merge1)
print(merge2)
<배열의 병합>
[[[ 0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]]
[[[ 0 1 2]
[ 6 7 8]]
[[ 3 4 5]
[ 9 10 11]]]
배열 병합 함수 : np.stack([array1, array2, …], axis=n)
입력 배열은 대괄호를 사용해 하나의 배열로 묶음
대괄호 안의 입력 배열은 모두 동일한 형태여야 하며,
axis를 통해 병합할 때 배열의 축 방향을 설정
-1은 마지막 번째 차원을 나타냄
-> 입력 배열의 차원이 2차원이므로 axis=-1은 axis=2와 같은 의미
반대로 배열을 분리해서 여러 개의 하위 배열로 나눌 수 있음.
슬라이싱을 통해 배열을 분리할 수 있지만 이 방법은 일부 배열을 잘라내는 방식
split() : 축을 기준으로 하위 배열로 나누어 반환
import numpy as np
array = np.arange(10).reshape(2, 5)
detach1 = np.split(array, 2, axis=0)
detach2 = np.split(array, [2,3], axis=1)
print(detach1)
print(detach2)
<배열의 분리>
[array([[0, 1, 2, 3, 4]]), array([[5, 6, 7, 8, 9]])]
[array([[0, 1],
[5, 6]]), array([[2],
[7]]), array([[3, 4],
[8, 9]])]
배열은 np.split(array, index, axis=n) 또는 np.split(array, sections, axis=n) 형태로 분리
배열의 분리 방식을 구분하는 요소는 두번째 매개 변수의 데이터 형식
detach1의 방식은 입력 배열 array를 index의 개수만큼 axis 방향 기준으로 분리해 하위 배열로 나눔
index의 허용 조건 : 입력 배열의 axis에 해당하는 차원의 크기를 index로 나눴을 때 정수 발생
axis의 허용 조건 : 입력 배열의 차원 수를 넘어갈 수 없음
만약 입력 배열이 6x4 크기의 2차원 배열이고 index=2, axis=1로 사용한다면,
열을 기준으로 2개의 배열로 나눠 세로로 반이 나눠진 6x2 배열이 두 개 반환
detach2의 방식은 정수로 이뤄진 1차원 배열을 인수로 사용하며, array[2:3]을 기준으로 나눔
즉, array[:2], array[2:3], array[3:]의 형태로 삼분할
열을 기준으로 나눴으므로 중간에 위차한 2와 7을 기준으로, 좌측과 우측으로 나눠져 세 개로 분리된 배열을 반환
'영상처리 > OpenCV' 카테고리의 다른 글
matrix 클래스 (0) | 2022.06.07 |
---|---|
배열 연산 (0) | 2022.06.07 |
배열 차원 변형 (0) | 2022.06.07 |
배열의 블록 단위 요소에 접근 (0) | 2022.06.07 |
배열의 개별 단위 요소에 접근 방법 (0) | 2022.06.07 |