NumPy 데이터 분석: 배열 비교 및 고급 활용
배열 비교 연산, 마스킹을 활용한 데이터 필터링, 그리고 배열 복사와 메모리 관리
NumPy는 데이터를 비교하거나 고급 방식으로 배열을 활용하는 기능을 제공합니다. 이번 글에서는 배열 비교 연산, 마스킹을 활용한 데이터 필터링, 그리고 배열 복사와 메모리 관리에 대해 알아보겠습니다.
1. 배열 비교 연산
NumPy는 배열의 요소를 비교하여 불리언 값을 반환합니다.
1) 요소별 비교
1
2
3
4
5
6
7
8
import numpy as np
arr1 = np.array([10, 20, 30, 40])
arr2 = np.array([15, 20, 25, 40])
# 두 배열 비교
print(arr1 == arr2) # 출력: [False True False True]
print(arr1 > arr2) # 출력: [False False True False]
2) 배열 전체 비교
array_equal()
함수는 두 배열이 동일한지 확인합니다.
1
2
3
4
5
# 배열 전체 비교
print(np.array_equal(arr1, arr2)) # 출력: False
arr3 = np.array([10, 20, 30, 40])
print(np.array_equal(arr1, arr3)) # 출력: True
2. 마스킹을 활용한 데이터 필터링
마스킹(masking)은 배열의 특정 조건을 기반으로 데이터를 필터링하는 방법입니다.
1) 조건 기반 필터링
1
2
3
4
5
arr = np.array([5, 10, 15, 20, 25])
# 조건에 맞는 요소 선택
filtered = arr[arr > 10]
print(filtered) # 출력: [15 20 25]
2) 조건부 대체
1
2
3
# 조건에 맞는 요소 대체
arr[arr > 10] = 0
print(arr) # 출력: [ 5 10 0 0 0]
3. 배열 복사와 메모리 관리
NumPy 배열은 기본적으로 참조에 의해 전달됩니다. 복사를 적절히 사용하지 않으면 원본 배열이 의도치 않게 변경될 수 있습니다.
1) 얕은 복사 (Shallow Copy)
얕은 복사는 원본 배열과 메모리를 공유합니다.
1
2
3
4
5
6
7
8
arr = np.array([1, 2, 3])
# 얕은 복사
shallow_copy = arr
shallow_copy[0] = 99
print(arr) # 출력: [99 2 3]
print(shallow_copy) # 출력: [99 2 3]
2) 깊은 복사 (Deep Copy)
깊은 복사는 별도의 메모리를 생성합니다.
1
2
3
4
5
6
7
8
arr = np.array([1, 2, 3])
# 깊은 복사
deep_copy = arr.copy()
deep_copy[0] = 99
print(arr) # 출력: [1 2 3]
print(deep_copy) # 출력: [99 2 3]
4. 배열의 고급 활용
1) 정렬
sort()
함수는 배열을 정렬합니다.
1
2
3
4
5
arr = np.array([50, 20, 10, 40])
# 배열 정렬
sorted_arr = np.sort(arr)
print(sorted_arr) # 출력: [10 20 40 50]
2) 고유 값 추출
unique()
함수는 배열에서 중복되지 않은 고유 값을 반환합니다.
1
2
3
4
5
arr = np.array([10, 20, 20, 30, 30, 30])
# 고유 값 추출
unique_values = np.unique(arr)
print(unique_values) # 출력: [10 20 30]
3) 배열 합치기
NumPy는 여러 배열을 하나로 합칠 수 있는 기능을 제공합니다.
1
2
3
4
5
6
arr1 = np.array([1, 2])
arr2 = np.array([3, 4])
# 배열 합치기
merged = np.concatenate((arr1, arr2))
print(merged) # 출력: [1 2 3 4]
정리
- 배열 비교 연산을 통해 조건 기반 필터링과 요소 비교를 수행할 수 있습니다.
- 마스킹을 활용하면 데이터를 효율적으로 필터링하거나 대체할 수 있습니다.
- 배열 복사는 참조 또는 별도의 메모리를 생성하여 배열을 관리합니다.
- 정렬, 고유 값 추출, 배열 합치기 등 고급 기능을 활용하면 복잡한 데이터 조작도 간단히 처리할 수 있습니다.
다음 글 예고:
NumPy 학습을 마무리하며, NumPy의 “실전 활용 사례”를 통해 다양한 분석 작업을 다뤄보겠습니다!
This post is licensed under CC BY 4.0 by the author.