NumPy
NumPy
개요
NumPy(Numerical Python의 약자는 파이썬에서 과학 계산과 데이터 분석을 수행하기 위한 핵심 라이브러리입니다. 특히 다차원 배열과 행렬 연산을 효율적으로 처리할 수 있도록 설계되어 있으며, 머신러닝, 통계 분석, 수치 시뮬레이션 등 다양한 분야에서 널리 사용됩니다. NumPy는 C 언어 기반으로 구현되어 있어 순수 파이썬보다 훨씬 빠른 연산 속도를 제공하며, Pandas, SciPy, scikit-learn, Matplotlib 등 많은 데이터과학 라이브러리의 기반으로 활용됩니다.
주요 기능
1. N차원 배열 객체 (ndarray)
NumPy의 핵심은 ndarray(N-dimensional array)라는 다차원 배열 객체입니다. 이 객체는 동일한 데이터 타입의 요소로 구성되며, 고정된 크기를 가지며 메모리 상에서 연속적으로 저장됩니다. 이로 인해 배열 연산이 매우 효율적입니다.
import numpy as np
# 1차원 배열 생성
arr1 = np.array([1, 2, 3, 4])
print(arr1) # [1 2 3 4]
# 2차원 배열 생성
arr2 = np.array([[1, 2], [3, 4]])
print(arr2)
# [[1 2]
# [3 4]]
2. 벡터화 연산 (Vectorization)
NumPy는 벡터화 연산을 지원하여 반복문 없이도 배열 전체에 대해 연산을 수행할 수 있습니다. 이는 코드를 간결하게 만들고, 성능을 크게 향상시킵니다.
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 요소별 덧셈 (벡터화)
c = a + b
print(c) # [5 7 9]
3. 브로드캐스팅 (Broadcasting)
브로드캐스팅은 크기가 다른 배열 간의 연산을 가능하게 하는 NumPy의 강력한 기능입니다. 작은 배열이 자동으로 큰 배열에 맞춰 확장되어 연산이 수행됩니다.
a = np.array([[1, 2], [3, 4]])
b = np.array([10, 20])
result = a + b # b가 [[10, 20], [10, 20]]로 확장됨
print(result)
# [[11 22]
# [13 24]]
주요 사용 사례
1. 수치 계산 및 수학 함수
NumPy는 삼각함수, 지수, 로그, 통계 함수 등 다양한 수학 함수를 제공합니다.
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x) # 배열 전체에 대해 사인 함수 적용
2. 배열 조작
배열의 형태를 변경하거나, 슬라이싱, 결합, 분할 등의 조작이 가능합니다.
arr = np.arange(6) # [0, 1, 2, 3, 4, 5]
reshaped = arr.reshape((2, 3))
print(reshaped)
# [[0 1 2]
# [3 4 5]]
3. 선형대수 연산
[numpy.linalg](/doc/%EA%B8%B0%EC%88%A0/%EC%88%98%ED%95%99/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98/numpy.linalg) 모듈을 통해 행렬의 역행렬, 고유값, 행렬식, 내적 등 선형대수 계산이 가능합니다.
A = np.array([[1, 2], [3, 4]])
det = np.linalg.det(A) # 행렬식 계산
inv = np.linalg.inv(A) # 역행렬 계산
성능 이점
- 속도: NumPy 배열은 C로 구현된 내부 연산을 사용하므로, 파이썬의
list를 이용한 반복 연산보다 수십에서 수백 배 빠릅니다. - 메모리 효율: 동일한 데이터 타입을 사용하고 메모리에 연속적으로 저장되므로, 메모리 사용량이 적고 접근 속도가 빠릅니다.
- 기능 풍부: 수치 연산, 통계, 선형대수 등 다양한 기능을 표준화된 인터페이스로 제공합니다.
설치 및 기본 사용법
NumPy는 일반적으로 pip 또는 conda를 통해 설치할 수 있습니다.
pip install numpy
또는 Anaconda 사용자라면:
conda install numpy
기본 임포트는 다음과 같이 합니다:
import numpy as np
관련 라이브러리와의 관계
| 라이브러리 | NumPy와의 관계 |
|---|---|
| Pandas | 내부적으로 NumPy 배열을 사용하여 데이터프레임 구현 |
| SciPy | NumPy를 기반으로 고급 수학, 과학 계산 제공 |
| Matplotlib | NumPy 배열을 입력으로 받아 시각화 수행 |
| scikit-learn | 머신러닝 알고리즘에서 데이터 입력을 NumPy 배열 형식으로 요구 |
참고 자료 및 관련 문서
- 공식 NumPy 문서
- NumPy GitHub 저장소
- Jake VanderPlas, Python Data Science Handbook (O'Reilly)
- Wes McKinney, Python for Data Analysis (O'Reilly)
NumPy는 데이터과학 파이썬 생태계의 기반이며, 데이터 분석을 시작하려는 모든 사용자에게 필수적인 도구입니다. 고성능 계산과 간결한 문법을 통해 복잡한 수치 연산을 직관적으로 처리할 수 있도록 도와줍니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.