본문 바로가기

Python

[Python] Numpy 데이터 합치기, 쪼개기

728x90

넘파이 배열 합치기와 쪼개기

NumPy는 배열 간 병합(합치기)분할(쪼개기)을 다양한 방식으로 수행할 수 있습니다. 일반 파이썬 리스트보다 효율적이고 유연하게 행(row)열(column)을 기준으로 배열을 합치거나 분할할 수 있습니다.

 

 

1. 배열 생성

import numpy as np

a = np.array([1, 2, 3, 4]).reshape(2, 2)
print(a)
# 결과:
# [[1 2]
#  [3 4]]

 

  • 배열 a는 2×2 형태로 변환되었습니다.

2. 배열 합치기

1. 수직으로 합치기 (열 방향, vstack)

두 배열을 수직(세로)으로 쌓아 합칩니다.

b = np.array([5, 6, 7, 8]).reshape(2, 2)
print(b)
# 결과:
# [[5 6]
#  [7 8]]

print(np.vstack((a, b)))
# 결과:
# [[1 2]
#  [3 4]
#  [5 6]
#  [7 8]]
  • vstack은 두 배열을 행(row)을 추가하는 방식으로 합칩니다.

2. 수평으로 합치기 (행 방향, hstack)

두 배열을 수평(가로)으로 이어붙입니다.

print(np.hstack((a, b)))
# 결과:
# [[1 2 5 6]
#  [3 4 7 8]]

 

3. 배열 쪼개기 (분할)

배열 생성

a = np.arange(12).reshape(2, 6)
print(a)
# 결과:
# [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]]
  • np.arange(12)로 0부터 11까지의 숫자를 생성하고, 이를 2×6 배열로 변환합니다.

 

1. 수평 분할 (열 기준, hsplit)

배열을 열(column)을 기준으로 여러 조각으로 나눕니다.

(1) 동일한 간격으로 분할

print(np.hsplit(a, 3))
# 결과:
# [array([[0, 1],
#         [6, 7]]), 
#  array([[2, 3],
#         [8, 9]]), 
#  array([[ 4,  5],
#         [10, 11]])]
  • hsplit(a, 3)은 배열을 3등분합니다.

(2) 특정 위치에서 분할

print(np.hsplit(a, (3, 4)))
# 결과:
# [array([[0, 1, 2],
#         [6, 7, 8]]), 
#  array([[3],
#         [9]]), 
#  array([[ 4,  5],
#         [10, 11]])]
  • hsplit(a, (3, 4))은 인덱스 3과 4에서 배열을 나눕니다.

4. 다른 분할 방법들

  • vsplit: 행(row)을 기준으로 배열을 여러 조각으로 나눕니다.
  • split: 배열을 임의의 축(axis)으로 나눕니다.

 

 

5. 요약

  • 배열 합치기
    • vstack(): 수직(행)으로 배열 합치기
    • hstack(): 수평(열)으로 배열 합치기
  • 배열 분할하기
    • hsplit(): 열(column) 기준으로 배열 나누기
    • vsplit(): 행(row) 기준으로 배열 나누기

NumPy의 병합과 분할 기능은 데이터 전처리와 분석 작업에서 매우 유용합니다. 이를 통해 원하는 형식으로 데이터를 쉽게 변환하고, 다양한 방식으로 데이터를 조작할 수 있습니다.

728x90

'Python' 카테고리의 다른 글

[Python] Numpy 인덱싱, 슬라이싱  (0) 2024.10.20
[Python] 넘파이(Numpy) 배열  (6) 2024.10.13
[Python] 리스트  (0) 2024.09.03
[Python] 함수  (0) 2024.08.27
[Python] 반복문  (0) 2024.08.27