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 |