安裝 NumPy 的唯一先決條件是 Python 本身。如果您還沒有 Python,並且想要最簡單的入門方式,我們建議您使用 Anaconda Distribution - 它包含 Python、NumPy 和許多其他常用的科學運算和資料科學套件。
NumPy 可以使用 conda
、pip
、macOS 和 Linux 上的套件管理員或 從原始碼 安裝。如需更詳細的說明,請參閱以下我們的 Python 和 NumPy 安裝指南。
CONDA
如果您使用 conda
,您可以從 defaults
或 conda-forge
通道安裝 NumPy
# Best practice, use an environment rather than install in the base env
conda create -n my-env
conda activate my-env
# If you want to install from conda-forge
conda config --env --add channels conda-forge
# The actual install command
conda install numpy
PIP
如果您使用 pip
,您可以使用以下方式安裝 NumPy
pip install numpy
此外,在使用 pip 時,最好使用虛擬環境 - 請參閱以下 可重現安裝 以了解原因,以及 這份指南 以了解有關使用虛擬環境的詳細資訊。
在 Python 中安裝和管理套件很複雜,大多數任務都有許多替代方案。本指南試圖讓讀者了解最佳(或最受歡迎)的解決方案,並提供明確的建議。它專注於在常見作業系統和硬體上使用 Python、NumPy 和 PyData(或數值運算)堆疊的使用者。
我們將從基於使用者的經驗層級和感興趣的作業系統的建議開始。如果您介於「初學者」和「進階使用者」之間,如果您想讓事情簡單,請選擇「初學者」,如果您想按照未來更長遠的最佳實務來工作,請選擇「進階使用者」。
在所有 Windows、macOS 和 Linux 上
對於從個人偏好或閱讀下面 conda 和 pip 之間的主要差異而了解的使用者,他們偏好基於 pip/PyPI 的解決方案,我們建議
管理套件是一項具有挑戰性的問題,因此有許多工具。對於 Web 和一般用途的 Python 開發,有一個完整的 工具集 與 pip 互補。對於高性能運算 (HPC),Spack 值得考慮。不過,對於大多數 NumPy 使用者來說,conda 和 pip 是兩個最受歡迎的工具。
安裝 Python 套件的兩個主要工具是 pip
和 conda
。它們的功能部分重疊(例如,兩個都可以安裝 numpy
),但是,它們也可以一起使用。我們將在此討論 pip 和 conda 之間的主要差異 - 如果你想要有效地管理套件,了解這一點很重要。
第一個差異是 conda 是跨語言的,它可以安裝 Python,而 pip 是為系統上的特定 Python 安裝的,並且僅將其他套件安裝到同一個 Python 安裝中。這也表示 conda 可以安裝你可能需要的非 Python 函式庫和工具(例如,編譯器、CUDA、HDF5),而 pip 則不行。
第二個差異是 pip 從 Python 套件索引 (PyPI) 安裝,而 conda 從其自己的頻道安裝(通常為「預設」或「conda-forge」)。PyPI 是目前為止最大的套件集合,但是,所有熱門套件也都可以使用 conda 取得。
第三個差異是 conda 是用於管理套件、相依性和環境的整合式解決方案,而使用 pip 時,你可能需要另一個工具(有很多!)來處理環境或複雜的相依性。
隨著函式庫更新,執行程式碼的結果可能會改變,或者你的程式碼可能會完全中斷。能夠重建你正在使用的套件和版本組非常重要。最佳做法是
NumPy 不依賴任何其他 Python 套件,但它依賴於加速線性代數函式庫,通常是 Intel MKL 或 OpenBLAS。使用者不必擔心安裝這些函式庫(它們會自動包含在所有 NumPy 安裝方法中)。進階使用者可能仍想知道詳細資訊,因為所使用的 BLAS 會影響效能、行為和磁碟大小
PyPI 上的 NumPy 輪子(pip 安裝的內容)是用 OpenBLAS 建置的。OpenBLAS 函式庫包含在輪子中。這會讓輪子變大,如果使用者還安裝(例如)SciPy,他們現在磁碟上會有兩個 OpenBLAS 副本。
在 conda 預設頻道中,NumPy 是針對 Intel MKL 建置的。MKL 是獨立的套件,當使用者安裝 NumPy 時,它會安裝在使用者的環境中。
在 conda-forge 頻道中,NumPy 是針對虛擬「BLAS」套件建置的。當使用者從 conda-forge 安裝 NumPy 時,該 BLAS 套件會與實際函式庫一起安裝,這預設為 OpenBLAS,但也可以是 MKL(來自預設頻道),甚至 BLIS 或參考 BLAS。
MKL 套件比 OpenBLAS 大很多,磁碟上約 700 MB,而 OpenBLAS 約 30 MB。
MKL 通常比 OpenBLAS 快一點且更強固。
除了安裝大小、效能和強固性之外,還有兩件事需要考慮
np.dot
等函式呼叫使用多執行緒,執行緒數目由建置時間選項和環境變數決定。通常會使用所有 CPU 核心。這對使用者來說有時是意料之外的;NumPy 本身不會自動將任何函式呼叫平行化。它通常會產生更好的效能,但也有害處,例如在使用 Dask、scikit-learn 或多處理時使用另一層平行化。如果您的安裝失敗並出現以下訊息,請參閱 疑難排解 ImportError。
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy c-extensions failed. This error can happen for
different reasons, often due to issues with your setup.