Python Numpy 강좌 : 제 11강 - 병합 및 분할

Python Numpy stack & split

Python Numpy 강좌 : 제 11강 - 병합 및 분할
[ Python-Numpy ] - 윤대희

병합


import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.hstack([a, b])
d = np.vstack([a, b])

print(a)
print(b)
print("--------")
print(c)
print(d)
결과
[[1 2]
[3 4]]
[[5 6]
[7 8]]
--------
[[1 2 5 6]
[3 4 7 8]]
[[1 2]
[3 4]
[5 6]
[7 8]]

numpy.hstack([배열1, 배열2])를 이용하여 배열1 우측배열2이어 붙일 수 있습니다.

numpy.vstack([배열1, 배열2])를 이용하여 배열1 하단배열2이어 붙일 수 있습니다.


import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.stack([a, b], axis=0)
d = np.stack([a, b], axis=1)

print(a)
print(b)
print("--------")
print(c)
print("--------")
print(d)
결과
[[1 2]
[3 4]]
[[5 6]
[7 8]]
--------
[[[1 2]
[3 4]]

[[5 6]
[7 8]]]
--------
[[[1 2]
[5 6]]

[[3 4]
[7 8]]]

numpy.stack([배열1, 배열2, axis=축])를 이용하여 지정한 으로 배열1배열2이어 붙일 수 있습니다.

이어 붙일 차원의 범위를 넘어갈 수 없습니다.


import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.dstack([a, b])

print(a)
print(b)
print("--------")
print(c)
결과
[[1 2]
[3 4]]
[[5 6]
[7 8]]
--------
[[[1 5]
[2 6]]

[[3 7]
[4 8]]]

numpy.dstack([배열1, 배열2])를 이용하여 새로운 축으로 배열1배열2이어 붙일 수 있습니다.

numpy.stack([a, b], axis=2)동일한 결과를 반환합니다.


import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.tile(a, 2)

print(a)
print(b)
결과
[[1 2]
[3 4]]
[[1 2 1 2]
[3 4 3 4]]

numpy.tile(배열, 반복 횟수)를 이용하여 배열반복 횟수만큼 이어 붙일 수 있습니다.



특수 병합 메소드


import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.c_[a, b]
d = np.r_[a, b]

print(a)
print(b)
print("--------")
print(c)
print(d)
결과
[[1 2]
[3 4]]
[[5 6]
[7 8]]
--------
[[1 2 5 6]
[3 4 7 8]]
[[1 2]
[3 4]
[5 6]
[7 8]]

numpy.c_[배열1, 배열2]를 이용하여 배열1 우측배열2이어 붙일 수 있습니다.

numpy.r_[배열1, 배열2]를 이용하여 배열1 하단배열2이어 붙일 수 있습니다.

소괄호 ()를 사용하지 않고 대괄호 []를 사용하여 메소드를 생성합니다.



분할


import numpy as np

array = np.array([
    [1, 2, 3, 4],
    [5, 6, 7, 8]
])

a = np.hsplit(array, 2)
b = np.hsplit(array, (1, 3))
c = np.vsplit(array, 2)

print(a)
print("--------")
print(b)
print("--------")
print(c)
결과
[array([[1, 2],
       [5, 6]]), array([[3, 4],
       [7, 8]])]
--------
[array([[1],
       [5]]), array([[2, 3],
       [6, 7]]), array([[4],
       [8]])]
--------
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])]

numpy.hsplit(배열, 개수 또는 구간)를 이용하여 배열을 수평 방향 또는 열(column) 단위로 분할합니다.

numpy.vsplit(배열, 개수 또는 구간)를 이용하여 배열을 수직 방향 또는 행(row) 단위로 분할합니다.

축을 따라 입력된 개수만큼 분할을 실행하며, 구간을 입력할 경우 해당 구간마다 잘라 n+1개의 배열이 생성됩니다.



import numpy as np

array = np.array([
    [1, 2, 3, 4],
    [5, 6, 7, 8]
])

a = np.split(array, 2, axis=0)
b = np.split(array, 2, axis=1)

print(a)
print(b)
결과
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])]
[array([[1, 2],
       [5, 6]]), array([[3, 4],
       [7, 8]])]
--------
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])]

numpy.split(배열, 개수 또는 구간, 축)를 이용하여 배열을 축 방향으로 분할합니다.

지정된 을 따라 입력된 개수만큼 분할을 실행하며, 구간을 입력할 경우 해당 구간마다 잘라 n+1개의 배열이 생성됩니다.



import numpy as np

array = np.array([
    [
        [1, 2, 3, 4],
        [5, 6, 7, 8]
    ],
    [
        [9, 10, 11, 12],
        [13, 14, 15, 16]
    ]
])

a = np.dsplit(array, 2)

print(a)
결과
[array([[[ 1, 2],
        [ 5, 6]],

       [[ 9, 10],
        [13, 14]]]), array([[[ 3, 4],
        [ 7, 8]],

       [[11, 12],
        [15, 16]]])]

numpy.dsplit(배열, 개수 또는 구간)를 이용하여 배열을 따라 분할합니다.

해당 함수는 3차원 이상의 배열에서만 작동합니다.

을 따라 입력된 개수만큼 분할하며, 구간을 입력할 경우 해당 구간마다 잘라 n+1개의 배열이 생성됩니다.



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post Python Numpy 강좌 : 제 10강 - 난수 ⤧  Next post Python Numpy 강좌 : 제 12강 - 브로드캐스팅
    Python-Numpy Category