이 카테고리는 국비지원 과정으로 [계룡건설] 빅데이터 기반 GreenTech SW개발자 과정에서 학습하는 내용을 정리하는 공간입니다.
NumPy 기본 개념과 활용 정리
NumPy는 파이썬에서 과학 연산 및 데이터 처리를 위해 사용하는 강력한 라이브러리이다. 이 글에서는 NumPy의 주요 개념과 기능을 체계적으로 정리한다.
1. 배열의 구조 및 메모리 관리
배열의 요소 순서
- 배열(Array)의 논리 순서와 물리 순서는 일치한다.
- 랜덤 억세스(Random Access): 요소를 비순차적으로 접근할 수 있다.
리스트와의 차이점
- 리스트(List)는 논리 순서와 물리 순서가 다를 수 있으며, 순차 접근(Sequential Access) 방식으로 데이터를 찾는다.
- NumPy 배열은 단일 포인터 메모리를 사용하여 효율적으로 데이터를 저장한다.
2. 배열 생성 및 변형
1차원 배열 생성
import numpy as np
testarr = np.array([1, 2, 3, 4], int)
print(testarr) # [1 2 3 4]
다차원 배열 생성
testarr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]], np.int64)
print(testarr)
배열 형태 변경 (Reshape & Flatten)
test_reshape = np.array([[1,2,3,4],[5,6,7,8]], int)
print(test_reshape.reshape(2,2,2)) # 3차원 변환
print(test_reshape.flatten()) # 1차원 변환
3. 인덱싱 및 슬라이싱
testindex = np.array([[1, 2, 3], [4, 5, 6]], int)
print(testindex[0, 0]) # 1
print(testindex[:, :2]) # 모든 행에서 2열까지 추출
4. 특수 행렬 생성
print(np.zeros((3, 3), dtype=np.int32)) # 0으로 채워진 배열
print(np.ones((3, 3), dtype=np.int32)) # 1로 채워진 배열
print(np.identity(3)) # 단위 행렬
5. 난수 생성 및 분포
print(np.random.uniform(0, 1, 10)) # 균등 분포 난수 생성
print(np.random.normal(10, 5, 1000)) # 정규 분포 난수 생성
6. 배열 연산 (브로드캐스팅 포함)
arr = np.array([1, 2, 3])
print(arr + arr) # [2 4 6]
print(arr * arr) # [1 4 9]
broad_matrix = np.arange(1, 13).reshape(4, 3)
broad_vector = np.array([10, 20, 30])
print(broad_matrix + broad_vector) # 벡터가 자동 확장되어 연산됨
7. 배열 비교 및 조건문 활용
comp = np.arange(10)
print(comp > 5) # [False False False ... True True True]
8. NaN 및 결측치 처리
nan_arr = np.array([1, 2, 3, np.nan, 5])
print(np.isnan(nan_arr)) # NaN 여부 확인
9. 최댓값/최솟값 및 인덱스 찾기
arr = np.arange(1, 11)
print(arr.max()) # 최댓값
print(arr.min()) # 최솟값
10. 불리언 인덱싱
arr = np.array([10, 20, 30, 40, 50])
mask = arr > 25
print(arr[mask]) # [30 40 50]
11. 배열 저장 및 로드
test_arr = np.arange(100)
np.save("test", arr=test_arr)
loaded = np.load("test.npy")
print(loaded)
NumPy는 데이터 연산과 처리를 보다 효과적으로 수행할 수 있도록 다양한 기능을 제공한다. 이를 적극 활용하면 성능과 코드 가독성을 향상시킬 수 있다.
'국비지원교육 > [계룡건설] 빅데이터 기반 GreenTech SW개발자' 카테고리의 다른 글
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .13** (0) | 2025.03.21 |
---|---|
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .12** (0) | 2025.03.21 |
**[계룡건설] GreenTech SW개발자 - Python 학습 노트 .11** (0) | 2025.03.05 |
**[계룡건설] GreenTech SW개발자 - SQL 학습 노트** (0) | 2025.02.17 |
**[계룡건설] GreenTech SW개발자 - JavaScript 학습 노트 .1** (0) | 2025.02.17 |