[Python.NumPy] array 붙이기 hstack, vstack, concatenate - Operation Function II

2020. 12. 9. 05:00Python과 머신러닝/NumPy 데이터 분석

0. 요약

  • 여러 소스로부터 데이터를 받고 나면 이를 합치는 동작이 필요하다.
  • 데이터를 입력받아 배열로 만들었다는 가정 하에, hstack/vstack과 concatenate 함수를 통해서 배열을 연결하는 동작을 배워보자.

1. hstack과 vstack

In [1]:a = np.arange(1,4) 
       a
Out[1]:array([1, 2, 3])

In [2]:b = np.arange(4,7) 
       b
Out[2]:array([4, 5, 6])

In [3]:np.hstack((a,b))
Out[3]:array([1, 2, 3, 4, 5, 6])

In [4]:np.vstack((a,b))
Out[4]:array([[1, 2, 3], [4, 5, 6]])
  • hstack은 horizontal stack의 약자로 두 개의 배열을 좌우로 붙여주는 함수이다.
    • 좌우로 붙여야하기 때문에 row의 개수는 동일해야 한다.
  • vstack은 vertical stack의 약자로 두 개의 배열을 위아래로 붙여주는 함수이다.
    • 위아래로 붙여야하기 때문에 col의 개수는 동일해야 한다.

 

2. np.concatenate

In [5]:c = np.array([[1, 2], [3, 4]]) 
       d = np.array([[5], [6]]) 
       c, d
Out[5]:(array([[1, 2], [3, 4]]), array([[5], [6]]))

In [6]:np.concatenate((c,d), axis=1)
Out[6]:array([[1, 2, 5], 
              [3, 4, 6]])

In [7]:e = np.array([[1, 2], [3, 4]]) 
       f = np.array([5, 6]) # shape == (2,) 
       e, f
Out[7]:(array([[1, 2], [3, 4]]), array([5, 6]))

In [8]:f = f[np.newaxis,:] 
       f # shape == (1,2)
Out[8]:array([[5, 6]])

In [9]:f.T.shape # shape == (2,1)
Out[9]:(2, 1)

In [10]:np.concatenate((e,f.T), axis=1)
Out[10]:array([[1, 2, 5], [3, 4, 6]])

 

  • hstack/vstack과 동일하게 np.concatenate 함수를 통해서도 두 개의 배열을 붙일 수 있다.
  • 위와 같이 axis=1로 concatenate을 할 경우 열을 추가하는 동작을 하고,
  • axis=0으로 concatenate을 할 경우 행을 추가하게 된다.
  • 여기서도 마찬가지로 추가할 때의 row/col의 개수가 맞아야지 추가할 수 있다.

 

3. 마무리

  • vstack/hstack과 concatenate 함수를 통해서 두 개 이상의 배열을 하나로 합칠 수 있다.
  • 여러 데이터를 하나로 통합하기 위해서는 자주 사용되는 함수인만큼 어떻게 사용되고,
    합쳐진 뒤의 데이터가 어떨지 예상할 수 있어야 한다.

 

관련 글

2020/12/08 - [Python과 머신러닝/Python 데이터 수집] - NumPy 차원별 sum 합, std 표준편차 구하기 - Operation Function I

반응형