본문 바로가기
카테고리 없음

[Python] NumPy concatenate 알아보기

by ykr0919 2024. 9. 19.

 

 

concatenate 메서드는 선택한 축(axis)의 방향으로 배열을 연결해 주는 메서드!

concatenate는 '사슬 같이 연결하다'는 의미라고 함! 

 

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
c = np.concatenate((a, b), axis=0)
# [1 2 3 4 5 6 7 8]

 

우선 1차원 배열에 concatenate 메서드를 적용해 보자! axis는 0으로 함.

 

우선!! axis란!! 

axis는 배열을 연결할 축(dimension)을 지정하는 파라미터임.

np.concatenate()에서 axis 값을 설정함으로써, 배열이 어떤 방향으로 이어 붙일지를 결정!! 

axis=0

행 (위 -> 아래) 방향으로 배열을 연결. 즉, 배열들을 위아래로 이어 붙임. 이 경우, 배열의 열 크기(열의 개수)는 동일해야 합니다.

axis=1

열 (좌 -> 우) 방향으로 배열을 연결. 즉, 배열들을 좌우로 이어 붙임. 이 경우, 배열의 행 크기(행의 개수)는 동일해야 합니다..

 

 

 

그럼 1차원 배열에서 axis=1로 적용해 보자! 

 

어!! 1로 적용하면 위와 같은 에러가 남 🚨

 

에러 메시지에서 나타난 문제는 axis=1이 배열의 차원과 맞지 않는다는 것임!!

 

구체적으로, "axis 1 is out of bounds for array of dimension 1"라는 에러는 1차원 배열에서 1번 축(axis 1)을 참조하려고 시도했기 때문에 발생함.

 

axis=1에서 에러가 발생한 이유는 방향이 axis=0 하나뿐이기 때문. '직선'이라고 생각하시면 됨. 직선에는 방향이 하나뿐임. 길이 방향만 있고 높이 방향은 없기 때문에 axis=1이 정의되지 않는 것임!!!  

 

axis=1은 2차원 배열에서 열을 따라 연결하려 할 때 사용됨.

그러나 a와 b가 1차원 배열일 경우, axis=1은 존재하지 않기 때문에 에러가 발생.

1차원 배열의 경우 axis=0만 사용할 수 있음.

 

 

 그럼 2차원 배열에서 사용해 보자!

 

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.concatenate((a, b), axis=0)
# [[1 2]
#  [3 4]
#  [5 6]
#  [7 8]]
d = np.concatenate((a, b), axis=1)
# [[1 2 5 6]
#  [3 4 7 8]]

 

 2차원 배열에서는 axis=1 가능!! 높이가 존재하기 때문!!

 

 

그럼 3차원 배열을 어떻까?? 🤔

 

3차원 배열에서는 axis=2까지 존재!!

 

a = np.array([[[1, 2], [3, 4], [5, 6]]])
b = np.array([[[7, 8], [9, 10], [11, 12]]])
c = np.concatenate((a, b), axis=0)
# [[[ 1  2]
#   [ 3  4]
#   [ 5  6]]

#  [[ 7  8]
#   [ 9 10]
#   [11 12]]]
d = np.concatenate((a, b), axis=1)
# [[[ 1  2]
#   [ 3  4]
#   [ 5  6]
#   [ 7  8]
#   [ 9 10]
#   [11 12]]]
e = np.concatenate((a, b), axis=2)
# [[[ 1  2  7  8]
#   [ 3  4  9 10]
#   [ 5  6 11 12]]]

 

3차원에서 axis = 0는 높이 방향, axis = 1은 행방향, axis = 2는 열 방향을 의미함!