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# OpenCvSharp4
  • Python OpenCV4
  • Using Tesseract
  • Using TensorFlow
  • Using Regular Expression
  • 윤대희 저 | 위키북스

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

    후원하기


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