NumPy 라이브러리 개요
NumPy (Numerical Python)는 파이썬에서 행렬이나 대규모 다차원 배열을 쉽게 처리하는 등 강력한 수치 계산을 지원하는 파이썬 라이브러리입니다. 다차원 배열 객체인 ndarray
를 중심으로 다양한 수학적 연산을 수행할 수 있습니다. 보통 넘파이라고 읽습니다.
🔹 NumPy 주요 기능 및 함수 정리
기능 | 설명 | 주요 함수 |
---|---|---|
배열 생성 | 리스트나 튜플을 배열로 변환 | np.array() |
0으로 채운 배열 생성 | np.zeros() | |
1로 채운 배열 생성 | np.ones() | |
특정 값으로 채운 배열 생성 | np.full() | |
연속된 숫자 배열 생성 | np.arange() | |
균등 간격 배열 생성 | np.linspace() | |
단위 행렬 생성 | np.eye() | |
배열 속성 확인 | 배열의 차원 확인 | .ndim |
배열의 형태(shape) 확인 | .shape | |
배열의 요소 개수 확인 | .size | |
배열의 데이터 타입 확인 | .dtype | |
배열 변형 | 배열 크기 변경 | .reshape() |
배열 1차원으로 변환 | .flatten() | |
차원 추가 | np.newaxis | |
배열 전치(Transpose) | .T | |
배열 연산 | 요소별 사칙연산 | + , - , * , / |
요소별 제곱 연산 | ** | |
배열의 내적 연산 | np.dot() 또는 @ | |
브로드캐스팅 연산 지원 | 자동 크기 확장 | |
배열 슬라이싱 | 특정 인덱스 접근 | arr[i, j] |
행/열 선택 | arr[i, :] , arr[:, j] | |
범위 선택 (슬라이싱) | arr[start:end] | |
통계 및 집계 연산 | 배열의 합 | .sum() |
평균 계산 | .mean() | |
최대/최소 값 | .max() , .min() | |
표준편차 계산 | .std() | |
분산 계산 | .var() | |
난수 생성 | 0~1 사이 난수 배열 | np.random.rand() |
정수 난수 생성 | np.random.randint() | |
정규 분포 난수 생성 | np.random.randn() | |
난수 시드 고정 | np.random.seed() | |
배열 비교 및 조건 연산 | 요소별 비교 | > , < , == |
조건에 맞는 값 필터링 | arr[arr > 3] | |
특정 조건 값 변경 | np.where(condition, x, y) | |
배열 정렬 | 오름차순 정렬 | np.sort() |
내림차순 정렬 | np.sort(arr)[::-1] | |
특정 축을 기준으로 정렬 | np.sort(arr, axis=0) | |
행렬 연산 | 행렬 곱셈 | np.dot() 또는 @ |
역행렬 계산 | np.linalg.inv() | |
행렬식 계산 | np.linalg.det() | |
고유값 및 고유벡터 | np.linalg.eig() | |
파일 입출력 | 배열을 파일로 저장 | np.save() |
여러 배열을 저장 | np.savez() | |
CSV 파일로 저장 | np.savetxt() | |
CSV 파일 불러오기 | np.loadtxt() |
1. NumPy 설치
pip install numpy
2. NumPy 기본 사용법
2.1 NumPy 가져오기
import numpy as np
2.2 배열 생성
# 리스트로부터 배열 생성
arr = np.array([1, 2, 3, 4, 5])
print(arr) # [1 2 3 4 5]
2.3 다차원 배열 생성
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
# [[1 2 3]
# [4 5 6]]
3. 배열 속성 확인
print(arr2d.shape) # (2, 3) -> 2행 3열
print(arr2d.ndim) # 2 -> 차원 수
print(arr2d.dtype) # int32 (또는 int64)
print(arr2d.size) # 6 -> 전체 요소 개수
4. 특수 배열 생성
np.zeros((3, 3)) # 3x3 영행렬
np.ones((2, 4)) # 2x4 1로 채운 행렬
np.eye(4) # 4x4 단위행렬
np.full((2, 3), 7) # 2x3 모든 원소가 7인 행렬
np.arange(10) # 0부터 9까지의 배열 생성
np.linspace(0, 1, 5) # 0~1 사이 5개 균등 분포 값
5. 배열 연산
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]
print(a ** 2) # [1 4 9]
6. 배열 슬라이싱 & 인덱싱
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[0, 2]) # 첫 번째 행, 세 번째 열 (3)
print(arr[1, :]) # 두 번째 행 전체 [4, 5, 6]
print(arr[:, 1]) # 두 번째 열 전체 [2, 5, 8]
print(arr[0:2, 1:3]) # (0~1행, 1~2열)
7. 배열 변형 (Reshape & Flatten)
arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped = arr.reshape(3, 2)
flattened = arr.flatten()
print(reshaped)
# [[1 2]
# [3 4]
# [5 6]]
print(flattened) # [1 2 3 4 5 6]
8. NumPy 브로드캐스팅
a = np.array([[1], [2], [3]])
b = np.array([4, 5, 6])
print(a + b)
# [[5 6 7]
# [6 7 8]
# [7 8 9]]
9. 통계 및 집계 함수
arr = np.array([1, 2, 3, 4, 5])
print(arr.sum()) # 15
print(arr.mean()) # 3.0
print(arr.max()) # 5
print(arr.min()) # 1
print(arr.std()) # 표준편차
print(arr.var()) # 분산
10. 난수 생성
np.random.seed(42) # 난수 고정
print(np.random.rand(3)) # 0~1 사이 난수 3개
print(np.random.randint(1, 10, (2, 3))) # 1~10 사이 정수 (2x3)
11. 행렬 연산
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(np.dot(A, B)) # 행렬 곱
print(A @ B) # 행렬 곱 (동일)
print(np.linalg.inv(A)) # 역행렬
print(np.linalg.det(A)) # 행렬식
print(np.linalg.eig(A)) # 고유값 & 고유벡터
NumPy는 데이터 분석, 머신러닝, 과학 연산 등에 필수적인 라이브러리로, 다차원 배열을 빠르고 효율적으로 다룰 수 있습니다! 🚀