NumPy 라이브러리란?
NumPy(넘파이, Numerical Python)는 파이썬에서 과학 계산 및 데이터 분석을 위한 대표적인 라이브러리입니다. 다차원 배열 객체인 ndarray
를 제공하며, 수학 연산 및 행렬 연산을 효율적으로 수행할 수 있도록 최적화되어 있습니다.
🔹 NumPy 설치 방법
pip install numpy
🔹 NumPy 기본 사용법
1. NumPy 라이브러리 불러오기
import numpy as np
2. NumPy 배열 생성
arr = np.array([1, 2, 3, 4, 5])
print(arr) # [1 2 3 4 5]
print(type(arr)) # <class 'numpy.ndarray'>
3. 다차원 배열 생성
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d)
출력:
[[1 2 3]
[4 5 6]]
4. 기본 배열 생성 함수
print(np.zeros((3, 3))) # 3x3 영행렬
print(np.ones((2, 4))) # 2x4 행렬 (모든 값이 1)
print(np.full((2, 2), 7)) # 모든 값이 7인 2x2 행렬
print(np.eye(3)) # 3x3 단위 행렬
print(np.arange(0, 10, 2)) # [0 2 4 6 8]
print(np.linspace(0, 1, 5)) # 0과 1 사이를 5등분한 배열
🔹 NumPy 배열 연산
1. 기본 연산
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. 브로드캐스팅(Broadcasting)
A = np.array([[1, 2], [3, 4]])
B = np.array([10, 20])
print(A + B)
# [[11 22]
# [13 24]]
- 브로드캐스팅이란 크기가 다른 배열을 자동으로 맞춰서 연산하는 기능입니다.
3. 행렬 연산
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A @ B) # 행렬 곱셈
print(np.dot(A, B)) # 같은 행렬 곱셈 결과
4. 유용한 수학 함수
arr = np.array([1, 2, 3, 4, 5])
print(np.sum(arr)) # 합계: 15
print(np.mean(arr)) # 평균: 3.0
print(np.max(arr)) # 최댓값: 5
print(np.min(arr)) # 최솟값: 1
print(np.std(arr)) # 표준편차
print(np.sqrt(arr)) # 제곱근
🔹 NumPy 배열 인덱싱 & 슬라이싱
arr = np.array([10, 20, 30, 40, 50])
print(arr[1]) # 20
print(arr[1:4]) # [20 30 40]
print(arr[:3]) # [10 20 30]
print(arr[::-1]) # [50 40 30 20 10] (거꾸로 출력)
2차원 배열에서 특정 요소 선택
arr_2d = np.array([[10, 20, 30], [40, 50, 60]])
print(arr_2d[0, 1]) # 20 (0번째 행, 1번째 열)
print(arr_2d[:, 1]) # [20 50] (모든 행의 1번째 열)
print(arr_2d[1, :]) # [40 50 60] (1번째 행의 모든 열)
🔹 NumPy 응용 예제
1. 난수 생성
np.random.seed(42) # 시드 고정 (결과 일관성 유지)
print(np.random.rand(3, 3)) # 0~1 사이의 난수 행렬
print(np.random.randint(1, 10, (3, 3))) # 1~10 사이의 정수 난수 행렬
2. 배열 변형 (Reshape)
arr = np.arange(1, 10)
print(arr.reshape(3, 3)) # 3x3 행렬로 변경
3. 배열 정렬
arr = np.array([3, 1, 4, 1, 5, 9])
print(np.sort(arr)) # 오름차순 정렬: [1 1 3 4 5 9]
🔹 NumPy 활용 예제: 선형대수
A = np.array([[2, 3], [1, 4]])
b = np.array([5, 6])
x = np.linalg.solve(A, b) # Ax = b의 해 구하기
print(x)
🔹 NumPy와 Pandas 비교
기능 | NumPy (ndarray ) | Pandas (DataFrame ) |
---|---|---|
데이터 구조 | 다차원 배열 (ndarray ) | 테이블 형태 (DataFrame ) |
속도 | 빠름 (벡터 연산) | 다소 느림 (추가 기능) |
사용 목적 | 수학 계산, 머신러닝 | 데이터 분석, 시각화 |
인덱싱 | 숫자 인덱싱 사용 | 라벨 및 숫자 인덱싱 지원 |