4.10.10 총정리:

지금까지 우리는 1차원 배열(벡터) 두 개를 합치는 수많은 함수와 문법들을 배웠습니다. 사실 이름만 다르고 결과가 똑같은 쌍둥이 함수들이 너무 많아서 헷갈리기 쉽습니다.

1차원 배열의 3가지 변신술

이번 챕터에서는 1차원 배열 ab를 결합하는 3가지 대표적인 형태를 기준으로 모든 문법을 총정리해 보겠습니다.

1차원 배열 결합 3가지 변신술

배열 준비

import numpy as np

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

[1단계] 눕혀서 길게 이어붙이기 (1차원 벡터 유지)

두 벡터를 마치 기차의 객차를 연결하듯 한 줄로 길게 눕혀서 이어 붙이는 방법입니다.

결과물도 똑같이 1차원 배열이 됩니다.

# 1. 수평 결합 (함수)
print(np.hstack((a, b)))

# 2. 마법의 단축키 (Row-wise)
print(np.r_[a, b])

# 3. 기본 연결 함수 (1차원 기본축)
print(np.concatenate((a, b)))

[실행 결과] 모두 똑같이 나옵니다!

[1 2 3 4 5 6]

[2단계] 위아래로 층층이 쌓기 (2차원 행 공간)

1차원 배열들을 바닥에 하나씩 내려놓으며 층(Row)을 쌓아 올려 2차원 배열 공간(Matrix)을 만드는 방법입니다.

결과물은 2차원이 됩니다.

# 1. 수직 결합 (가장 널리 쓰이는 표준)
print(np.vstack((a, b)))

# 2. 수직 결합 (vstack과 100% 동일한 쌍둥이)
print(np.row_stack((a, b)))

# 3. 차원 확장(newaxis) 후 결합하는 하드코어 방법 (참고용)
print(np.r_[a[np.newaxis, :], b[np.newaxis, :]])
print(np.concatenate((a[np.newaxis, :], b[np.newaxis, :])))

[실행 결과] 모두 똑같이 나옵니다!

[[1 2 3]
 [4 5 6]]

[3단계] 꼿꼿한 기둥으로 세우기 (2차원 열 공간)

누워있는 1차원 배열을 먼저 세로 기둥(Column)으로 세운 뒤,

그것을 옆으로 나란히 결합하여 2차원 공간을 만드는 방법입니다.

# 1. 기둥 세우기 (가장 편리하고 널리 쓰이는 표준)
print(np.column_stack((a, b)))

# 2. 마법의 단축키 (Column-wise)
print(np.c_[a, b])

# 3. 차원 확장(newaxis) 후 가로로 결합하는 하드코어 방법 (참고용)
print(np.hstack((a[:, np.newaxis], b[:, np.newaxis])))
print(np.concatenate(((a[:, np.newaxis], b[:, np.newaxis])), axis=1))

[실행 결과] 모두 똑같이 나옵니다!

[[1 4]
 [2 5]
 [3 6]]

[최종 실무 핵심 요약] 위코드의 3번 방법(매번 newaxis로 차원을 억지로 늘려주는 방법)은 이론을 이해할 때나 필요할 뿐 실무에서는 타이핑이 길어져 거의 쓰이지 않습니다.

결론적으로 실무에서 가장 많이 쓰이는 3대장 함수만 완벽히 외우시면 됩니다!

  1. 기차처럼 한 줄로 쭉 잇기: np.hstack() 또는 np.r_[]
  2. 아파트처럼 위아래 층으로 쌓기: np.vstack()
  3. 건물처럼 꼿꼿한 기둥 세우기: np.column_stack() 또는 np.c_[]
서브목차