NumPy
Python으로 과학적 컴퓨팅을 하기 위한 기초 패키지
NumPy 1.26.0 출시
2023-09-16

강력한 n차원 배열
빠르고 다재다능한 NumPy의 벡터화, 인덱싱, 전송 구성은 오늘날 배열 컴퓨팅의 사실상 표준입니다.

수치적 컴퓨팅 도구
NumPy는 포괄적인 수학 함수, 난수 생성기, 선형 대수 루틴, 푸리에 변환 등을 제공합니다.

오픈소스
자유 BSD 라이선스에 따라, NumPy는 흥미에 찼으며, 반응이 빠르고, 다양성이 넘치는 커뮤니티에 의하여 GitHub에서 공개적으로 개발되고 유지됩니다.

상호운용성
NumPy는 광범위한 하드웨어 및 컴퓨팅 플랫폼을 지원합니다. 또 분산형, GPU, 희소 배열 라이브러리와도 잘 작동합니다.

고성능
NumPy의 핵심은 최적화된 C 코드로 구성되어 있습니다. 컴파일된 코드의 속도와 함께 Python의 유연함을 즐기세요.

쉬운 사용성
NumPy의 고수준 문법은 어떤 배경이나 수준을 가지고 있는 프로그래머든 쉽게 접근하여 생산적인 일을 할 수 있도록 만들어줍니다.

NumPy 써 보기

대화형 셸을 이용해 브라우저에서 NumPy를 사용해보세요

"""
To try the examples in the browser:
1. Type code in the input cell and press
   Shift + Enter to execute
2. Or copy paste the code, and click on
   the "Run" button in the toolbar
"""

# The standard way to import NumPy:
import numpy as np

# Create a 2-D array, set every second element in
# some rows and find max per row:

x = np.arange(15, dtype=np.int64).reshape(3, 5)
x[1:, ::2] = -99
x
# array([[  0,   1,   2,   3,   4],
#        [-99,   6, -99,   8, -99],
#        [-99,  11, -99,  13, -99]])

x.max(axis=1)
# array([ 4,  8, 13])

# Generate normally distributed random numbers:
rng = np.random.default_rng()
samples = rng.normal(size=2500)
samples

생태계

Python으로 작업하는 거의 모든 과학자는 NumPy의 힘을 이용합니다.

NumPy는 C 및 Fortran과 같은 언어의 계산 능력을 배우고 사용하기 훨씬 쉬운 언어인 Python으로 가져옵니다. 이 힘에는 단순함이 있습니다. NumPy의 솔루션은 종종 명확하고 우아합니다.

  • NumPy의 API는 라이브러리가 혁신적인 하드웨어를 활용하거나, 특수 배열 유형을 생성하거나, NumPy가 제공하는 것 이상의 기능을 추가하도록 작성되는 출발점입니다.

    배열 라이브러리 기능 및 응용 분야
    Dask Dask 분석을 위한 분산 배열 및 고급 병렬 처리를 통해 규모에 맞는 성능을 구현합니다.
    CuPy CuPy Python에서 GPU 가속 컴퓨팅을 구현해주며 NumPy와 호환되는 배열 라이브러리.
    JAX JAX NumPy 프로그램을 부분적으로 변환하여 벡터화, GPU/TPU의 적시 컴파일을 제공하는 라이브러리.
    xarray Xarray 고급 통계 및 시각화를 구동하기 위하여 라벨링 및 인덱싱이 이뤄진 다차원 배열을 제공
    sparse Sparse Dask 및 SciPy의 희소 선형 대수와 통합되는 NumPy 호환 희소 배열 라이브러리입니다.
    PyTorch PyTorch 연구 프로토타이핑에서 프로덕션 배포로의 경로를 가속화하는 딥 러닝 프레임워크입니다.
    TensorFlow TensorFlow 기계 학습을 위한 엔드 투 엔드 플랫폼으로 ML 기반 애플리케이션을 쉽게 구축하고 배포할 수 있습니다.
    MXNet MXNet 유연한 연구 프로토타이핑 및 생산에 적합한 딥 러닝 프레임워크입니다.
    arrow Arrow 열 기반 메모리 내 데이터 및 분석을 위한 교차 언어 개발 플랫폼입니다.
    xtensor xtensor 수치 분석을 위한 브로드캐스팅 및 지연 컴퓨팅이 포함된 다차원 배열.
    awkward Awkward Array NumPy와 유사한 관용어로 JSON과 유사한 데이터를 조작합니다.
    uarray uarray 구현에서 API를 분리하는 Python 백엔드 시스템; unumpy는 NumPy API를 제공합니다.
    tensorly tensorly NumPy, MXNet, PyTorch, TensorFlow 또는 CuPy를 원활하게 사용하기 위한 Tensor 학습, 대수 및 백엔드.
  • NumPy는 풍부한 데이터 과학 라이브러리 생태계의 핵심에 있습니다. 일반적인 탐색적 데이터 과학 워크플로는 다음과 같습니다.

    대용량 데이터의 경우 DaskRay가 확장되도록 설계되었습니다. 안정적인 배포는 데이터 버전 관리(DVC), 실험 추적(MLFlow) 및 워크플로 자동화([Airflow](https:// airflow.apache.org), Dagster](https://dagster.io) 와 Prefect).

    세 개의 겹치는 원의 다이어그램입니다. 원에는 '수학', '컴퓨터 과학' 및 '영역 전문성'이라는 레이블이 지정되어 있습니다. 세 개의 원이 겹치는 다이어그램의 중간에는 'Data Science'라는 레이블이 붙은 영역이 있습니다.
  • NumPy는 scikit-learnSciPy와 같은 강력한 기계 학습 라이브러리의 기반을 형성합니다. 기계 학습이 성장함에 따라 NumPy에 구축된 라이브러리 목록도 늘어납니다. TensorFlow의 딥 러닝 기능은 폭넓게 응용할 수 있습니다. — 그 중에는 음성 및 이미지 인식, 텍스트 기반 애플리케이션, 시계열 분석 및 비디오 감지가 있습니다. 또 다른 딥 러닝 라이브러리인 PyTorch는 컴퓨터 비전 및 자연어 처리 연구자들 사이에서 인기가 있습니다. MXNet은 딥 러닝을 위한 청사진과 템플릿을 제공하는 또 다른 AI 패키지입니다.

    ensemble 메서드라고 하는 비닝(binning), 배깅(bagging), 스태킹(stacking), 부스팅(boosting)과 같은 통계 기법은 다음과 같은 도구로 구현되는 ML 알고리즘에 속합니다. XGBoost, LightGBMCatBoost — – 가장 빠른 추론 엔진 중 하나입니다. YellowbrickEli5는 기계 학습 시각화를 제공합니다.

  • 몇 가지만 예를 들자면 NumPy는 Matplotlib, Seaborn, Plotly, Altair, Bokeh, Holoviz, Vispy, Napari, PyVista 등이 포함되어 있으며 급격히 성장해나가고 있는 Python visualization landscape의 핵심 구성 요소 중 하나입니다.

    NumPy는 큰 배열을 고속으로 처리할 수 있어 연구자가 기존 Python이 처리할 수 있는 데이터셋보다 훨씬 큰 것도 시각화할 수 있도록 합니다.

  • 사례 연구