NumPy
Python 科學運算的基本套件
NumPy 2.0 發布!
2024-06-17
強大的 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 未提供功能的起點。

陣列函式庫功能與應用領域
DaskDask用於分析的分布式陣列和進階平行性,可實現大規模效能。
CuPyCuPy與 NumPy 相容的陣列函式庫,用於 Python 的 GPU 加速運算。
JAXJAXNumPy 程式可組合轉換:微分、向量化、即時編譯至 GPU/TPU。
xarrayXarrayxarray
sparse標籤化、索引的多維陣列,用於進階分析和視覺化。Sparse
PyTorch與 NumPy 相容的稀疏陣列函式庫,可與 Dask 和 SciPy 的稀疏線性代數整合。PyTorch
TensorFlow深度學習架構,可加速從研究原型到生產部署的途徑。TensorFlow
arrow機器學習的端到端平台,可輕鬆建置和部署 ML 驅動的應用程式。Arrow
xtensor跨語言開發平台,用於資料欄位內記憶體資料和分析。xtensor
awkward具廣播和延遲運算的多維陣列,用於數值分析。Awkward Array
uarray使用類似 NumPy 的慣用語操作類似 JSON 的資料。uarray
tensorlyPython 後端系統,可將 API 與實作分離;unumpy 提供 NumPy API。tensorly
Diagram of Python Libraries. The five catagories are 'Extract, Transform, Load', 'Data Exploration', 'Data Modeling', 'Data Evaluation' and 'Data Presentation'.

張量學習、代數和後端,可無縫使用 NumPy、PyTorch、TensorFlow 或 CuPy。

對於大量資料,DaskRay 被設計成可擴充。穩定的部署仰賴資料版本控制 (DVC)、實驗追蹤 (MLFlow) 和工作流程自動化 (AirflowDagsterPrefect)。

Diagram of three overlapping circles. The circles are labeled 'Mathematics', 'Computer Science' and 'Domain Expertise'. In the middle of the diagram, which has the three circles overlapping it, is an area labeled 'Data Science'.

NumPy 構成強大機器學習函式庫的基礎,例如 scikit-learnSciPy。隨著機器學習的成長,建構在 NumPy 上的函式庫清單也隨之增加。 TensorFlow 的深度學習功能具有廣泛的應用,其中包括語音和影像辨識、基於文字的應用、時間序列分析和影片偵測。 PyTorch 是另一個深度學習函式庫,在電腦視覺和自然語言處理的研究人員中很受歡迎。

稱為 整體 方法的統計技術,例如 binning、bagging、stacking 和 boosting,是 XGBoostLightGBMCatBoost 等工具所實作的 ML 演算法之一,而這些工具是其中一個最快的推論引擎。 YellowbrickEli5 提供機器學習視覺化。

A streamplot made in matplotlib
A scatter-plot graph made in ggpy
A box-plot made in plotly
A streamgraph made in altair
A pairplot of two types of graph, a plot-graph and a frequency graph made in seaborn"
A 3D volume rendering made in PyVista.
A multi-dimensionan image made in napari.
A Voronoi diagram made in vispy.

NumPy 是蓬勃發展的 Python 視覺化領域 中的必要元件,其中包括 MatplotlibSeabornPlotlyAltairBokehHolovizVispyNapariPyVista 等。

NumPy 對大型陣列的加速處理讓研究人員能夠視覺化遠大於原生 Python 所能處理的資料集。

案例研究