安裝 NumPy 唯一的前提是 Python 本身。如果您還沒有 Python,並且想要最簡單的入門方式,我們建議您使用 Anaconda 發行版 - 它包含了 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 的解決方案的使用者,我們建議
管理套件是一個具有挑戰性的問題,因此,出現了許多工具。對於網路和通用 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 Packaging Index (PyPI) 安裝,而 conda 從其自己的頻道(通常是「defaults」或「conda-forge」)安裝。PyPI 是迄今為止最大的套件集合,但是,所有流行的套件也都可以用於 conda。
第三個差異是 conda 是一個用於管理套件、依賴項和環境的整合解決方案,而使用 pip,您可能需要另一個工具(有很多!)來處理環境或複雜的依賴項。
隨著函式庫更新,執行程式碼的結果可能會改變,或者您的程式碼可能會完全崩潰。能夠重建您正在使用的套件和版本集非常重要。最佳實踐是
NumPy 不依賴任何其他 Python 套件,但是,它確實依賴於加速線性代數函式庫 - 通常是 Intel MKL 或 OpenBLAS。使用者不必擔心安裝這些函式庫(它們會自動包含在所有 NumPy 安裝方法中)。進階使用者可能仍然想了解詳細資訊,因為使用的 BLAS 會影響效能、行為和磁碟空間大小
PyPI 上的 NumPy wheels,也就是 pip 安裝的內容,是使用 OpenBLAS 建置的。OpenBLAS 函式庫包含在 wheel 中。這使得 wheel 更大,如果使用者也安裝了(例如)SciPy,他們現在將在磁碟上有兩個 OpenBLAS 副本。
在 conda defaults 頻道中,NumPy 是針對 Intel MKL 建置的。MKL 是一個獨立的套件,當使用者安裝 NumPy 時,它將安裝在使用者的環境中。
在 conda-forge 頻道中,NumPy 是針對虛擬的「BLAS」套件建置的。當使用者從 conda-forge 安裝 NumPy 時,該 BLAS 套件將與實際的函式庫一起安裝 - 這預設為 OpenBLAS,但也可以是 MKL(來自 defaults 頻道),甚至可以是 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.