본문 바로가기
파이썬/통계분석

[파이썬 강의] 64. 배열을 원하는 방향으로 합치기 (concatenate 함수와 axis)

by 만다린망고 2021. 10. 22.
반응형

배열을 합치는데 사용되는 함수는 크게 두가지가 있습니다. stack 류 함수와 concatenate 함수입니다. 

1) stack 류 함수
  - vstack
  - hstack
  - column_stack
 
2) concatenate 함수

오늘은 concatenate 함수에 대해 알아봅시다. concatenate 함수는 하나의 함수가 vstack, hstack 을 포함합니다. axis 라는 옵션을 이용합니다. axis 옵션만 이해하면 concatante 를 자유자재로 사용할 수 있습니다. axis의 개수는 합치려는 배열의 차원의 개수와 동일합니다. 3차원이면 axis는 0,1,2 세개입니다. shape 함수의 결과가 axis와 동일합니다. shape함수의 첫번째 값이 0번 axis, 두번째 값이 1번 axis 입니다. 

1차원 배열

먼저 두개의 벡터를 정의하고 concatenate 함수를 사용하여 합쳐줍시다. 벡터는 1차원이므로 axis가 하나 뿐입니다. 

>>> v1=np.array([1,2,3])
>>> v2=np.array([4,5,6])
>>> np.concatenate((v1,v2),axis=0)
array([1, 2, 3, 4, 5, 6])


열방향으로 합쳐집니다. 아쉽지만 concatenate 로 1차원 배열의 행방향 결합은 불가능합니다. 이때는 vstack 을 사용해야 합니다. 

 

2차원 배열

두개의 벡터를 정의합니다. 

>>> m1=np.array([[1,2,3],[4,5,6]])
>>> m2=np.array([[7,8,9],[10,11,12]])


합치려는 배열의 차원은 2차원입니다. 

>>> m1.shape
(2, 3)


shape 첫번째 자리가 행입니다. 따라서 axis=0으로 설정할 경우 행방향 결합이 됩니다. 

>>> np.concatenate((m1,m2),axis=0)
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])


axis=1로 설정한다면 열방향 결합이 될겁니다. 

>>> np.concatenate((m1,m2),axis=1)
array([[ 1,  2,  3,  7,  8,  9],
       [ 4,  5,  6, 10, 11, 12]])


차원이 높아져도 같은 원리가 적용됩니다. 




반응형

댓글