본문 바로가기
Python/numpy

(numpy) 배열의 결합

by re-hwi 2022. 10. 20.

배열을 결합하기위해서는 특정한 조건이 필요하다. 예를 들어서 행으로 결합한다면 (가로로 붙힌다면) 배열의 세로(행)의 사이즈가 맞아야 한다.

 

반대로 열로 결합한다면 (세로로 붙힌다면) 당연히 가로 길이가 맞아야 할 것이다. 

행으로 결합하기 위해 두 배열을 붙히는데 위의 배열은 세로 길이가 맞아 잘 결합되었지만, 아래 두 배열은 세로 길이가 맞질 않아 결합이 되지 않는다. 따라서 배열을 결합하기 위해선 행/열의 길이를 맞추어야 한다.

 

np.concatenate((arr_1,arr_2),axis = )

arr_1 와 arr_2 두 배열을 합칠 때 사용한다. axis는 축을 의미하는데 0을 넣으면 열로 결합하기 때문에 (아래로 결합) 열의 크기를 맞추어야 하고 1은 가로로 결합한다는 의미이다.

예시)

import numpy as np

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([[9,8,7],[6,5,4],[3,2,1]])
print(np.concatenate((a,b),axis = 0))	# 세로로 결합

>>> [[1 2 3]
 [4 5 6]
 [7 8 9]
 [9 8 7]
 [6 5 4]
 [3 2 1]]

 

np.stack((arr_1,arr_2),axis = )

concatenate함수와 같이 배열을 축을 기준으로 합치지만, 합치려는 축을 제외한 부분의 크기도 같아야 한다. 쉽게 말해서 합치려는 두 배열 모두 행과 열의 크기가 같아야한다.

예시)

import numpy as np

a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print(np.stack((a,b),axis = 1))	// 가로로 결합

>>> [[[1 2]
  [5 6]]
 [[3 4]
  [7 8]]]

 

np.vstack((arr_1,arr_2))

배열을 세로로 결합한다. concatenate 함수의 axis = 0과 같은 의미이며 열 개수가 일치해야한다.

예시)

import numpy as np

a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print(np.vstack((a,b)))

>>>[[1 2]

 [3 4]

 [5 6]

 [7 8]]

 

np.hstack((arr_1,arr_2))

 배열을 가로로 결합한다. concatenate 함수의 axis = 1과 같은 의미이며 행 개수가 일치해야한다.

예시)

import numpy as np

a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print(np.hstack((a,b)))

>>> [[1 2 5 6]

 [3 4 7 8]]

 

np.dstack((arr_1,arr_2))

배열을 앞 뒤로 결합한다. 3차원 이상 배열에서 사용 가능하다

예시)

import numpy as np

a = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
b = np.array([[[9,10],[11,12]],[[13,14],[15,16]]])

print(np.dstack((a,b)))

>>> [[[ 1  2  9 10]
  [ 3  4 11 12]]

 [[ 5  6 13 14]
  [ 7  8 15 16]]]

반응형

댓글