NumPy
📋 문서 버전
이 문서는 2개의 버전이 있습니다. 현재 버전 1을 보고 있습니다.
Num(넘파이, Numerical Python의 약)는 파이썬에서 과학 계산을 위한 핵심 라이브러리로, 다차원 배열과 행렬 연산을 효율적으로 수행할 수 있도록 설계되었습니다. 고성능 수치 연산을 가능하게 하며, 데이터 과학, 기계 학습, 물리 시뮬레이션, 이미지 처리 등 다양한 분야에서 널리 사용되고 있습니다. NumPy는 파이썬의 기본 리스트보다 훨씬 빠르고 메모리 효율적인 배열 구조를 제공하며, 다른 데이터 과학 라이브러리들(예: Pandas, SciPy, scikit-learn, TensorFlow 등)의 기반으로 작용합니다.
개요
NumPy는 2005년에 Travis Oliphant에 의해 개발되었으며, 파이썬을 과학적 계산 환경으로 확장하기 위한 노력의 일환으로 탄생했습니다. NumPy의 핵심 데이터 구조는 ndarray(N-dimensional array)로, 동일한 데이터 타입을 가진 요소들로 구성된 고정 크기의 다차원 배열입니다. 이 배열은 C 언어 수준의 성능을 제공하며, 벡터화된 연산(vectorized operations)을 통해 루프 없이도 대량의 데이터를 빠르게 처리할 수 있습니다.
NumPy는 오픈소스 프로젝트로, BSD 라이선스 하에 배포되며, 활발한 커뮤니티와 지속적인 개발을 통해 진화하고 있습니다.
주요 기능
1. ndarray: 다차원 배열 객체
NumPy의 중심은 numpy.ndarray
클래스입니다. 이 객체는 정수, 실수, 복소수 등 다양한 데이터 타입을 지원하며, 다음과 같은 특징을 가집니다:
- 동일한 데이터 타입: 배열 내 모든 요소는 동일한 데이터 타입을 가져야 하며, 이는 메모리 효율성과 연산 속도를 높입니다.
- 고정 크기: 배열 생성 후 크기를 변경할 수 없으며, 재할당이 필요할 경우 새로운 배열이 생성됩니다.
- 다차원 지원: 1차원(벡터), 2차원(행렬), 3차원 이상의 배열도 지원합니다.
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]])
(arr2)
# [[1 2]
# [3 4]]
2. 벡터화 연산
NumPy는 요소별(element-wise) 연산을 자동으로 벡터화하여, 반복문 없이도 빠른 계산이 가능합니다. 예를 들어, 두 배열의 덧셈은 내부적으로 최적화된 C 코드로 수행됩니다.
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b # 요소별 덧셈
print(c) # [5 7 9]
3. 브로드캐스팅(Broadcasting)
브로드캐스팅은 크기가 다른 배열 간의 연산을 가능하게 하는 강력한 기능입니다. 작은 배열이 자동으로 큰 배열의 형태에 맞춰 확장되어 연산이 수행됩니다.
arr = np.array([[1, 2], [3, 4]])
scalar = 10
result = arr + scalar # [[11, 12], [13, 14]]
4. 수학적 함수와 통계 기능
NumPy는 삼각함수, 지수함수, 로그함수 등 다양한 수학 함수와 함께, 평균, 표준편차, 최댓값, 최솟값 등 통계 연산도 제공합니다.
data = np.array([1, 2, 3, 4, 5])
print(np.mean(data)) # 3.0
print(np.std(data)) # 1.414...
print(np.sin(np.pi / 2)) # 1.0
5. 선형대수 및 푸리에 변환
[numpy.linalg](/doc/%EA%B8%B0%EC%88%A0/%EC%88%98%EC%B9%98%EA%B3%84%EC%82%B0/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98/numpy.linalg)
모듈은 행렬식, 고유값, 역행렬, SVD 등 선형대수 계산을 지원하며, [numpy.fft](/doc/%EA%B8%B0%EC%88%A0/%EC%88%98%EC%B9%98%EA%B3%84%EC%82%B0/%ED%91%B8%EB%A6%AC%EC%97%90%20%EB%B3%80%ED%99%98/numpy.fft)
는 빠른 푸리에 변환(Fast Fourier Transform)을 제공합니다.
A = np.array([[1, 2], [3, 4]])
print(np.linalg.det(A)) # 행렬식 계산
성능 이점
NumPy 배열은 파이썬 내장 리스트에 비해 다음과 같은 성능 이점을 가집니다:
항목 | NumPy 배열 | 파이썬 리스트 |
---|---|---|
메모리 사용 | 연속된 메모리 블록 사용 | 객체 포인터 배열 |
연산 속도 | C 기반 최적화 | 파이썬 루프 기반 |
데이터 타입 | 정형화된 타입 (예: float64) | 동적 타입 |
벡터화 | 지원 | 미지원 |
이러한 이유로 NumPy는 대규모 수치 데이터 처리에 필수적인 도구입니다.
관련 라이브러리 및 생태계
NumPy는 파이썬 과학 계산 생태계의 기반으로, 다음과 같은 주요 라이브러리들이 NumPy 배열을 기본 데이터 구조로 사용합니다:
- Pandas: 데이터 분석 라이브러리, 내부적으로 NumPy 배열 활용
- SciPy: 과학 및 기술 계산을 위한 고급 알고리즘 제공
- Matplotlib: 데이터 시각화, NumPy 배열 입력 지원
- scikit-learn: 머신러닝 라이브러리, 학습 데이터를 NumPy 배열로 처리
설치 및 사용 방법
NumPy는 일반적으로 pip
또는 conda
를 통해 설치할 수 있습니다.
pip install numpy
또는 Anaconda 환경에서는:
conda install numpy
설치 후 다음과 같이 임포트하여 사용합니다:
import numpy as np
참고 자료
- 공식 문서: https://numpy.org/doc/
- GitHub 저장소: https://github.com/numpy/numpy
- NumPy: 배열 기반 컴퓨팅의 기초 (책, Travis Oliphant 저)
NumPy는 현대 데이터 과학의 기초이며, 파이썬을 사용하는 과학자, 엔지니어, 데이터 분석가라면 반드시 숙지해야 할 라이브러리입니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.