"""
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,而 Python 本身就是一種極易學習與使用的語言。伴隨著強大功能的是簡潔性:NumPy 的解決方案通常清晰且優雅。
當函式庫需要利用創新硬體、建立特殊陣列型別,或新增超出 NumPy 本身提供的功能時,NumPy 的 API 往往是首選起點。
| 陣列函式庫 | 功能與應用領域 | |
![]() | Dask | 提供用於分析的分散式陣列與進階平行運算,實現大規模效能。 |
![]() | CuPy | 相容於 NumPy 的陣列函式庫,支援 Python 的 GPU 加速運算。 |
![]() | JAX | 可組合的 NumPy 程式轉換:支援微分、向量化,並可即時編譯至 GPU/TPU。 |
![]() | Xarray | 為進階分析與視覺化提供標註化、索引化的多維陣列。 |
![]() | Sparse | 相容於 NumPy 的稀疏陣列函式庫,可與 Dask 及 SciPy 的稀疏線性代數整合。 |
| PyTorch | 深度學習框架,加速從研究原型開發到生產環境部署的過程。 | |
| TensorFlow | 端到端的機器學習平台,可輕鬆建構與部署機器學習應用程式。 | |
![]() | Arrow | 跨語言開發平台,用於記憶體內的列式資料(columnar data)處理與分析。 |
![]() | xtensor | 支援廣播與惰性運算(lazy computing)的多維陣列,用於數值分析。 |
| Awkward Array | 使用類似 NumPy 的語法來處理類似 JSON 的巢狀資料。 | |
![]() | uarray | 將 API 與實作分離的 Python 後端系統;unumpy 提供 NumPy API。 |
![]() | tensorly | 張量學習、代數與後端支援,可無縫使用 NumPy、PyTorch、TensorFlow 或 CuPy。 |
| Blosc2 | 針對記憶體內、磁碟上或遠端壓縮陣列的加速運算。 |
NumPy 是資料科學函式庫豐富生態系統的核心。典型的探索性資料科學工作流程可能如下:
NumPy 構成了強大機器學習函式庫(如 scikit-learn 和 SciPy)的基礎。隨著機器學習的發展,建立在 NumPy 上的函式庫清單也隨之增加。TensorFlow 的深度學習功能具有廣泛的應用,包括語音與影像辨識、文字應用、時間序列分析及視訊偵測。PyTorch 是另一個深度學習函式庫,在電腦視覺與自然語言處理領域的研究人員中極受歡迎。
被稱為整合學習(ensemble methods)的統計技術,如分箱(binning)、裝袋(bagging)、堆疊(stacking)與提升(boosting),皆是諸如 XGBoost、LightGBM 和 CatBoost(最快的推論引擎之一)等工具所實作的機器學習演算法。Yellowbrick 與 Eli5 則提供機器學習視覺化功能。
NumPy 是蓬勃發展的 Python 視覺化生態系統中的重要組件,其中包括 Matplotlib、Seaborn、Plotly、Altair、Bokeh、Holoviz、Vispy、Napari 以及 PyVista 等。
NumPy 對大型陣列的加速處理能力,使研究人員能夠視覺化遠超原生 Python 所能處理的龐大資料集。