[머신러닝을 위한 파이썬] Numerical Python (Numpy) Overview and Usage
2024. 12. 22. 23:43ㆍMOOC
1. Numpy 개요
- Numpy는 Python의 고성능 수학 연산 패키지로, 배열(Array) 기반 연산의 표준.
- 주요 특징:
- 빠르고 메모리 효율적.
- 반복문 없이 데이터 배열 처리 가능.
- 선형 대수 관련 다양한 기능 제공.
- 대규모 데이터 계산 시 효율적.
2. Numpy 설치 및 실행
# 가상환경 실행 후 Numpy 설치
activate ml_scratch
conda install numpy
# Jupyter Notebook 실행
jupyter notebook
3. 배열 생성
1) 기본 배열 생성
import numpy as np
# 1차원 배열 생성
test_array = np.array([1, 4, 5, 8], float)
print(test_array)
# 출력: [1. 4. 5. 8.]
# 배열 정보
print(test_array.dtype) # 데이터 타입
print(test_array.shape) # 배열 크기
2) 다양한 배열 생성
- arange: 지정된 범위 내 배열 생성.
- zeros: 0으로 초기화된 배열 생성.
- ones: 1로 초기화된 배열 생성.
- empty: 초기화되지 않은 배열 생성.
- identity: 단위 행렬 생성.
- eye: 대각선이 1인 행렬 생성.
# 범위 지정
array1 = np.arange(0, 10, 2) # [0 2 4 6 8]
# 0으로 채워진 배열
array2 = np.zeros((2, 3)) # [[0. 0. 0.] [0. 0. 0.]]
# 1로 채워진 배열
array3 = np.ones((3, 3)) # [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
4. 배열 연산
1) 기본 연산
- Numpy는 배열 간 사칙 연산을 지원
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 덧셈, 뺄셈, 곱셈, 나눗셈
print(a + b) # [5 7 9]
print(a - b) # [-3 -3 -3]
print(a * b) # [4 10 18]
print(a / b) # [0.25 0.4 0.5]
2) 행렬 곱
# 행렬 곱
A = np.array([[1, 2], [3, 4]])
B = np.array([[2, 0], [1, 3]])
result = np.dot(A, B)
print(result)
# 출력: [[4 6]
# [10 12]]
5. 배열 모양 변경
1) Reshape
- 배열의 크기나 차원을 변경.
array = np.arange(8) # [0 1 2 3 4 5 6 7]
# 2x4 배열로 변경
reshaped = array.reshape(2, 4) # [[0 1 2 3] [4 5 6 7]]
2) Flatten
- 다차원 배열을 1차원으로 변환.
flattened = reshaped.flatten() # [0 1 2 3 4 5 6 7]
6. 인덱싱과 슬라이싱
1) 인덱싱
- 특정 요소를 참조.
a = np.array([[1, 2, 3], [4, 5, 6]])
# 특정 요소 접근
print(a[0, 1]) # 2
2) 슬라이싱
- 배열의 부분 집합 추출
# 행/열 슬라이싱
subset = a[:, 1:] # 모든 행, 1열 이상
print(subset) # [[2 3] [5 6]]
7. Broadcasting
- 배열 크기가 다를 때 연산을 지원.
a = np.array([[1, 2], [3, 4]])
b = np.array([10, 20])
result = a + b
print(result)
# [[11 22]
# [13 24]]
8. Numpy 성능 비교
import timeit
# 성능 테스트
scalar = 2
vector = list(range(1000000))
# For loop
time1 = timeit.timeit("[scalar * value for value in vector]", globals=globals(), number=1)
# Numpy
time2 = timeit.timeit("np.arange(1000000) * scalar", globals=globals(), number=1)
print("For loop:", time1, "seconds")
print("Numpy:", time2, "seconds")
9. 데이터 로드 및 저장
1) Text 파일 로드 및 저장
# 저장
np.savetxt("data.csv", array, delimiter=",")
# 로드
data = np.loadtxt("data.csv", delimiter=",")
2) Numpy Binary 파일 사용
# 저장
np.save("array.npy", array)
# 로드
array = np.load("array.npy")
요약
- 빠른 연산: Numpy는 배열 연산과 행렬 연산에 최적화.
- 다양한 기능: Broadcasting, Reshape, Sllicing 등 유연한 데이터 처리.
- 효율성: 대규모 데이터 계산 시 성능 향상.
- 저장 및 로드: CSV 및 Binary 포맷으로 데이터 관리 가능
'MOOC' 카테고리의 다른 글
[머신러닝을 위한 파이썬] Pandas #2 (0) | 2024.12.26 |
---|---|
[머신러닝을 위한 파이썬] Pandas (0) | 2024.12.26 |
[머신러닝을 위한 파이썬] Basic Linear Algebra (0) | 2024.12.22 |
[머신러닝을 위한 파이썬] Case Study - News Categorization-1 (0) | 2024.12.22 |
[머신러닝을 위한 파이썬] Linear algebra (2) | 2024.12.22 |