Post

NumPy 데이터 분석: 배열 변환 및 조작

배열의 형태 변경, 병합 및 분리, 그리고 배열 데이터 조작 방법

NumPy는 배열의 형태를 변경하거나 데이터를 조작하는 다양한 기능을 제공합니다. 이번 글에서는 배열의 형태 변경, 병합 및 분리, 그리고 배열 데이터 조작 방법을 살펴보겠습니다.

1. 배열의 형태 변경 (Reshape)

배열의 형태를 변경하여 다양한 차원의 배열로 변환할 수 있습니다.

1) 배열 형태 변경

reshape() 함수는 배열의 형태를 변경합니다.

1
2
3
4
5
6
7
8
9
10
11
import numpy as np

# 1차원 배열 생성
arr = np.array([1, 2, 3, 4, 5, 6])

# 2x3 형태로 변환
reshaped = arr.reshape(2, 3)
print(reshaped)
# 출력:
# [[1 2 3]
#  [4 5 6]]

주의:

  • 변경하려는 배열의 요소 개수는 변경 후에도 동일해야 합니다.

2) 자동 형태 지정

-1을 사용하면 자동으로 형태를 계산합니다.

1
2
3
4
5
6
7
# 자동 형태 계산
reshaped = arr.reshape(3, -1)
print(reshaped)
# 출력:
# [[1 2]
#  [3 4]
#  [5 6]]

3) 배열 펼치기

ravel() 또는 flatten() 함수는 다차원 배열을 1차원으로 변환합니다.

1
2
3
4
5
# 배열 펼치기
arr2 = np.array([[1, 2], [3, 4]])
flattened = arr2.ravel()
print(flattened)
# 출력: [1 2 3 4]

2. 배열 병합과 분리

1) 배열 병합

1. hstack() 함수

  • 배열을 수평으로 병합합니다. ```python arr1 = np.array([1, 2]) arr2 = np.array([3, 4])

merged = np.hstack((arr1, arr2)) print(merged)

출력: [1 2 3 4]

1
2
3
4
5
6
7
8
9
**2. `vstack()` 함수**  
- 배열을 수직으로 병합합니다.
```python
merged = np.vstack((arr1, arr2))
print(merged)
# 출력:
# [[1 2]
#  [3 4]]

2) 배열 분리

1. hsplit() 함수

  • 배열을 수평으로 분리합니다. ```python arr = np.array([[1, 2, 3], [4, 5, 6]])

split = np.hsplit(arr, 3) print(split)

출력: [array([[1],

[4]]), array([[2],

[5]]), array([[3],

[6]])]

1
2
3
4
5
6
7
8
**2. `vsplit()` 함수**  
- 배열을 수직으로 분리합니다.
```python
split = np.vsplit(arr, 2)
print(split)
# 출력:
# [array([[1, 2, 3]]), array([[4, 5, 6]])]

3. 배열 데이터 조작

1) 배열 전치 (Transpose)

T 속성 또는 transpose() 함수를 사용하여 배열의 행과 열을 교환합니다.

1
2
3
4
5
6
7
arr = np.array([[1, 2], [3, 4]])

transposed = arr.T
print(transposed)
# 출력:
# [[1 3]
#  [2 4]]

2) 배열 뒤집기

flip() 함수는 배열의 요소를 뒤집습니다.

1
2
3
4
5
6
# 수평으로 뒤집기
flipped = np.flip(arr, axis=1)
print(flipped)
# 출력:
# [[2 1]
#  [4 3]]

3) 배열 축 변경

swapaxes() 함수는 배열의 축을 변경합니다.

1
2
3
4
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

swapped = arr.swapaxes(0, 1)
print(swapped)

4. 배열 데이터 추가와 삭제

1) 배열 요소 추가

append() 함수는 배열에 새로운 요소를 추가합니다.

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

# 배열 끝에 추가
new_arr = np.append(arr, [4, 5])
print(new_arr)
# 출력: [1 2 3 4 5]

2) 배열 요소 삭제

delete() 함수는 특정 위치의 요소를 삭제합니다.

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

# 인덱스 2의 요소 삭제
new_arr = np.delete(arr, 2)
print(new_arr)
# 출력: [1 2 4]

3) 배열 요소 삽입

insert() 함수는 특정 위치에 요소를 삽입합니다.

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

# 인덱스 1에 99 삽입
new_arr = np.insert(arr, 1, 99)
print(new_arr)
# 출력: [ 1 99  2  3]

정리

  • 배열 변환은 데이터 분석에서 배열의 차원을 변경하거나 재구조화할 때 유용합니다.
  • 배열 병합과 분리는 데이터를 효율적으로 연결하거나 나누는 데 사용됩니다.
  • 데이터 조작은 배열 전치, 뒤집기, 축 변경 등을 포함하여 데이터 구조를 재구성하는 데 도움이 됩니다.
  • NumPy의 다양한 배열 조작 기능을 활용하면 복잡한 데이터 작업도 간단히 처리할 수 있습니다.

다음 글 예고:
NumPy의 데이터 분석에 필요한 중요한 연산을 다뤄보는 “기본 연산 및 통계 함수”에 대해 알아보겠습니다!

This post is licensed under CC BY 4.0 by the author.