什麼是NUMPY?LEADTEK 麗臺科技2022-07-18 09:26:25

NumPy

一個免費的開源 Python 庫,用於 n 維陣列(也稱為張量)處理和數值計算。

什麼是 NUMPY?

NumPy 是一個免費的 Python 程式語言開源庫,它功能強大、已經過充分最佳化,並增加了對大型多維陣列(也稱為矩陣或張量)的支援。NumPy 還提供了一系列高階數學函式,可與這些陣列結合使用。其中包括基本的線性代數、隨機模擬、傅立葉變換、三角運算和統計運算。

NumPy 代表 “numerical Python”,基於早期的 Numeric 和 Numarray 庫構建而成,旨在為 Python 提供快速的數字計算。如今,NumPy 貢獻者眾多,並得到了 NumFOCUS 的贊助。

作為科學計算的核心庫,NumPy 是 Pandas、

Scikit-learn

SciPy

等庫的基礎。它廣泛應用於在大型陣列上執行最佳化的數學運算。

選擇 NUMPY 的原因及其工作原理

多維陣列是 NumPy 庫的中心資料結構,通常代表值的網格。NumPy 的 ndarray 是一個同構的 n 維陣列物件,描述了類似型別的元素或項的集合。在這些

ndarrays

中,每個項都包含大小相同的記憶體塊,且每個記憶體塊都採用同一識別方式。這能夠高效、快速、輕鬆地處理科學計算的資料。

什麼是NUMPY?

NumPy 陣列運算速度比 Python Lists 要快,因為 NumPy 陣列是類似資料型別的編譯,並且在記憶體中密集打包。相比之下,Python Lists 可以具有不同的資料型別,在系統執行計算時會增加對這些資料型別的限制。

| NumPy 的優勢

NumPy 具有以下重要優勢和特性:

NumPy 的 ndarray 計算概念是 Python 和 PyData 科學生態系統的核心。

NumPy 為高度最佳化的 C 函式提供了 Python 前端,可提供簡單的 Python 介面,並實現編譯程式碼的速度。

NumPy 強大的 N 維陣列物件可與各種庫整合。

與使用 Python 的內建列表相比,NumPy 陣列可以更高效地使用大型資料集來執行高階數學運算,且使用的程式碼更少。對於大小和速度至關重要的科學計算序列而言,這一點至關重要。

NUMPY 的重要意義

NumPy 讓資料科學家更易於使用 Python 並提供了 C 級最佳化,有助於快速建立高效程式碼,進行探索資料分析和模型構建。如今,要想在科學計算領域取得成功,對演算法進行快速原型設計必不可少,而這二者的實現對此至關重要。因此,可以使用 NumPy 在 Python 中實現多維資料通訊。

利用 PYTHON 進行 GPU 加速計算

在架構方面,CPU 僅由幾個具有大快取記憶體的核心組成,一次只可以處理幾個軟體執行緒。相比之下,

GPU 由數百個核心組成

,可以同時處理數千個執行緒。

什麼是NUMPY?

NumPy 已成為在 Python 中實現多維資料通訊的實際方法。然而,對於多核 GPU,這種實施並非最佳。因此,對於較新的針對 GPU 最佳化的庫實施 Numpy 陣列或與 Numpy 陣列進行互操作。

NVIDIA®

CUDA

® 是 NVIDIA 專為 GPU 通用計算開發的平行計算平臺和程式設計模型。CUDA 陣列介面是描述 GPU 陣列(張量)的標準格式,允許在不同的庫之間共享 GPU 陣列,而無需複製或轉換資料。CUDA 陣列由 Numba、CuPy、MXNet 和 PyTorch 提供支援。

CuPy

是一個利用 GPU 庫在 NVIDIA GPU 上實施 NumPy CUDA 陣列的庫。

Numba

是一個 Python 編譯器,可以編譯 Python 程式碼,以在支援 CUDA 的 GPU 上執行。Numba 直接支援 NumPy 陣列。

Apache MXNet

是一個靈活高效的深度學習庫。可以使用它的 NDArray 將模型的輸入和輸出表示和操作為多維陣列。NDArray 類似於 NumPy 的 ndarray,但它們可以在 GPU 上執行,以加速計算。

PyTorch

是一種開源深度學習框架,以出色的靈活性和易用性著稱。Pytorch Tensors 與 NumPy 的 ndarray 類似,但它們可以在 GPU 上執行,加速計算。

NVIDIA GPU 加速的端到端資料科學

基於

CUDA-X AI

建立的 NVIDIA

RAPIDS™

開源軟體庫套件使您完全能夠在 GPU 上執行端到端資料科學和分析流程。此套件依靠 NVIDIA CUDA 基元進行低級別計算最佳化,但透過使用者友好型 Python 介面實現了 GPU 並行化和高頻寬視訊記憶體速度。

藉助 RAPIDS GPU DataFrame,資料可以透過一個類似 Pandas 的介面載入到 GPU 上,然後用於各種連線的機器學習和圖形分析演算法,而無需離開 GPU。這種級別的互操作性是透過 Apache Arrow 這樣的庫實現的。僅需一行程式碼,即可從 NumPy 陣列、Pandas DataFrame 和 PyArrow 表格建立 GPU 資料框。其他專案可以使用陣列介面交換 CUDA 資料。這可加速端到端流程(從資料準備到機器學習,再到深度學習)。

什麼是NUMPY?

RAPIDS 支援在許多熱門資料科學庫之間共享裝置記憶體。這樣可將資料保留在 GPU 上,並省去了來回複製主機記憶體的高昂成本。

什麼是NUMPY?

*本文轉自 NVIDIA英偉達