np.concatnate
numpy.concatenate((a1, a2, ...), axis=0)를 써서 사용합니다. 여기서 axis=0 행이고 axis=1 열입니다.
- axis=0이면 열에다가 concat
- axis=1이면 행에다가 concat
- axis에 대해 매개변수가 없으면 1차원으로 concat합니다.
그림으로 예시를 보여드리겠습니다. 각각 (2,3)의 a와 b의 배열이 있습니다. 두개의 배열에 대해 사용하는 예시를 보여드리겠습니다.
배열 선언
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b = np.array([[7,8,9],[10,11,12]])
>>> b
array([[ 7, 8, 9],
[10, 11, 12]])
np.concatenate((a, b), axis = None)
None을 입력하면 a와 b의 배열이 1차원으로 펼쳐진다고 생각하면 됩니다.
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b
array([[ 7, 8, 9],
[10, 11, 12]])
>>> np.concatenate((a,b),axis=None)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
np.concatenate((a, b), axis = 0) , np.concatenate((a, b)), np.vstack((a, b))
세 개의 함수는 동일한 결과를 출력합니다. axis=0일 때, 행을 기준으로 concat, stack하게 됩니다. 자세한 것은 밑의 그림에 나와있습니다.
axis = 0 을 기준으로 a와 b의 배열이 합쳐지는 것을 볼 수 있습니다. vstack에서 v는 vertically를 의미하며 수직으로 쌓인다는 것을 말합니다.
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b
array([[ 7, 8, 9],
[10, 11, 12]])
>>> np.concatenate((a,b))
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
>>> np.concatenate((a,b), axis=0)
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
# vstack도 동일한 결과 반환
>>> np.vstack((a,b))
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
np.concatenate((a, b), axis=1), np.hstack((a, b))
두 개의 함수는 동일한 결과를 출력합니다. axis=1일 때, 열을 기준으로 concat, stack하게 됩니다. 자세한 것은 밑의 그림에 나와있습니다.
axis = 1 을 기준으로 a와 b의 배열이 합쳐지는 것을 볼 수 있습니다.hstack에서 h는 horizontally를 의미하며 수평으로 쌓인다는 것을 말합니다.
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b
array([[ 7, 8, 9],
[10, 11, 12]])
>>> np.concatenate((a,b), axis=1)
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])
>>> np.hstack((a,b))
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])
추가적으로 r_와 c_에 대해서 설명해보겠습니다.
np.r_[a, b]
r_는 np.concatenate((a,b)), np.vstack((a, b))와 동일하다고 보시면 됩니다.
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b
array([[ 7, 8, 9],
[10, 11, 12]])
>>> np.r_[a,b]
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
np.c_[a, b]
c_는 np.concatenate((a,b), axis = 1), np.hstack((a, b))와 동일하다고 보시면 됩니다.
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> b
array([[ 7, 8, 9],
[10, 11, 12]])
>>> np.c_[a,b]
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])
출처 : https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html
'Coding > Numpy' 카테고리의 다른 글
[Numpy] 차원 축소 및 확장 (np.expand_dims 와 np.sqeeze) (0) | 2023.12.28 |
---|---|
[Numpy] 팬시 색인(fancy indexing) (1) | 2023.12.22 |
[Numpy] Numpy 메서드 ( argmin, argmax, cumsum, cumprod) (0) | 2023.12.21 |
[Numpy] Numpy란? (ndarray, ndim, shape) (0) | 2023.12.20 |