Studio KimHippo :D

[Python /NumPy] 4. 배열의 재구조화, 병합, 분할 본문

Python Study/NumPy

[Python /NumPy] 4. 배열의 재구조화, 병합, 분할

김작은하마 2019. 7. 7. 23:59
import numpy as np


# NOTE : 1차원 배열을 3x3배열로 재구조화 시킴.
x4 = np.arange(1, 10)

grid = x4.reshape(3, 3)
grid
# NOTE : 이 코드가 동작하려면 초기 배열의 규모가 형상이 변경된 배열의 규모와 일치해야 한다.

x5 = np.array([1, 2, 3])
# NOTE : reshape를 이용한 행 벡터
x5 = x5.reshape(1,3)

# NOTE : newaxis 메소드를 이용한 행벡터
x2[np.newaxis, : ]


# NOTE : reshape 메소드를 이용한 열벡터
x2.reshape(3, 1)

# NOTE : newaxis 메소드를 이용한 열벡터
x2[ : , np.newaxis]

Out [1] : array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

Out [2] :  array([[1, 2, 3]])

Out [3] :  array([[1, 2, 3]])

Out [4] :  array([[1], [2], [3]])

Out [5] :  array([[1], [2], [3]])

x = np.array([1, 2, 3])
y = np.array([3, 2, 1])
z = np.array([99, 99, 99])
grid = np.array([[1, 2, 3],
                 [4, 5, 6]])

v = np.array([100, 100, 100])
h = np.array([[99], [99]])

# NOTE : 배열을 연결 시켜줌.
np.concatenate([x, y])


# NOTE : 두 개 이상의 배열도 연결시켜줌.
np.concatenate([x, y, z])

# NOTE : concatenate는 2차원 배열도 적용가능함.
np.concatenate([grid, grid])

Out [1] :  array([1, 2, 3, 3, 2, 1])

Out [2] : array([ 1, 2, 3, 3, 2, 1, 99, 99, 99])

Out [3] : array([[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]])

# NOTE : 혼합된 차원의 배열 합치기
# np.vstack(vertical stack / 수직 스택), np.hstack(horizontal stack / 수평스택)
np.vstack([grid,v])
np.hstack([grid, h])

Out [1] : array([[ 1, 2, 3], [ 4, 5, 6], [100, 100, 100]])

Out [2] : array([[ 1, 2, 3, 99], [ 4, 5, 6, 99]])

# NOTE : 배열 분할하기
x = [1, 2, 3, 99, 99, 3, 2, 1]
x1, x2, x3 = np.split(x, [3, 5])
print(x1, x2, x3)

grid = np.arange(16).reshape(4,4)

# NOTE 
# np.vsplit : 수평으로 분할, np.hsplit : 수직으로 분할
upper, lower = np.vsplit(grid, [2])
print(upper,'\n \n', lower)

left, right = np.hsplit(grid, [2])
print(left, '\n\n', right)

Out [1] : [1 2 3] [99 99] [3 2 1]

Out [2] : [[0 1 2 3] [4 5 6 7]] 

            [[ 8  9 10 11] [12 13 14 15]]

Out [3] : [[ 0  1]  [ 4  5] [ 8  9] [12 13]] 

            [[ 2  3] [ 6  7] [10 11] [14 15]]

 

참고

O'REILLY 제이크 밴더플래스 저/ 위키북스 김정인 역 - 파이썬 데이터 사이언스 핸드북

Comments