安裝 NumPy 的唯一先決條件是 Python 本身。如果你還沒有 Python 并且想要以最簡(jiǎn)單的方式開始,我們建議使用?Anaconda Distribution?- 它包括 Python、NumPy 和許多其他用于科學(xué)計(jì)算和數(shù)據(jù)科學(xué)的常用包。
NumPy 可以通過conda
、pip
、 macOS 和 Linux 上的包管理器安裝,或者從來(lái)源處安裝。有關(guān)更詳細(xì)的說明,請(qǐng)參閱下面的Python 和 NumPy 安裝指南。
如果使用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
,則可以使用以下命令安裝 NumPy:
pip install numpy
此外,在使用 pip 時(shí),最好使用虛擬環(huán)境 - 請(qǐng)參閱下面的可重復(fù)安裝了解有關(guān)使用虛擬環(huán)境的詳細(xì)信息。
在 Python 中安裝和管理包很復(fù)雜,對(duì)于大多數(shù)任務(wù),有許多替代解決方案。本指南將會(huì)幫助讀者了解最佳(或最受歡迎)的解決方案,并給出明確的建議。它側(cè)重于Python
、NumPy
和 PyData
(或數(shù)值計(jì)算)堆棧在常見操作系統(tǒng)和硬件上的用戶。
我們將從基于用戶體驗(yàn)水平和感興趣的操作系統(tǒng)的建議開始。如果您介于“初級(jí)”和“高級(jí)”之間,且您只是要簡(jiǎn)單的了解一下,請(qǐng)選擇“初級(jí)”;如果您想根據(jù)未來(lái)走得更遠(yuǎn)的最佳實(shí)踐工作,請(qǐng)選擇“高級(jí)”。
在所有 Windows、macOS 和 Linux 上:
base
最小的conda 環(huán)境,并使用一個(gè)或多個(gè)?conda 環(huán)境來(lái)安裝您正在處理的任務(wù)或項(xiàng)目所需的包。defaults
頻道中的軟件包感到滿意,否則請(qǐng)通過conda-forge
?設(shè)置頻道優(yōu)先級(jí)來(lái)設(shè)置您的默認(rèn)頻道。如果你覺得稍微過時(shí)的軟件包沒問題,并且更喜歡穩(wěn)定性,可以不用直接去使用最新版本的庫(kù):
pip install somepackage --user
.如果使用 GPU:
base
最小的conda 環(huán)境,并使用一個(gè)或多個(gè)?conda 環(huán)境?來(lái)安裝您正在處理的任務(wù)或項(xiàng)目所需的包。defaults
conda 通道(conda-forge
對(duì) GPU 包還沒有很好的支持)。管理包是一個(gè)具有挑戰(zhàn)性的問題,因此有很多工具。對(duì)于 Web 和通用 Python 開發(fā),有大量與 pip 互補(bǔ)的工具。對(duì)于高性能計(jì)算(HPC),?Spack
值得考慮。不過對(duì)于大多數(shù) NumPy 用戶來(lái)說,conda
和?pip
是兩個(gè)最流行的工具。
安裝 Python 包的兩個(gè)主要工具是 pip
和 conda
。它們的功能部分重疊(例如,兩者都可以安裝numpy
),但是,它們也可以一起工作。我們將在這里討論 pip
和 conda
之間的主要區(qū)別 。如果想有效地管理包,這對(duì)于理解這一點(diǎn)很重要。
第一個(gè)區(qū)別是 conda
是跨語(yǔ)言的,它可以安裝 Python,而 pip
是為系統(tǒng)上的特定 Python 安裝的,并且僅將其他軟件包安裝到同一個(gè) Python 安裝中。這也意味著 conda
可以安裝您可能需要的非 Python 庫(kù)和工具(例如編譯器、CUDA、HDF5),而 pip
不能。
第二個(gè)區(qū)別是 pip
從 Python Packaging Index (PyPI) 安裝,而 conda
從它自己的渠道安裝(通常是“defaults”或“conda-forge”)。PyPI 是迄今為止最大的軟件包集合,但是,所有流行的軟件包也可用于 conda。
第三個(gè)區(qū)別是 conda
是用于管理包、依賴項(xiàng)和環(huán)境的集成解決方案,而使用 pip
您可能需要另一個(gè)工具(有很多!)來(lái)處理環(huán)境或復(fù)雜的依賴項(xiàng)。
對(duì)于那些從個(gè)人喜好或者了解了上面關(guān)于 conda 和 pip 之間的主要區(qū)別,確定自己更喜歡基于 pip/PyPI 的解決方案的用戶,我們建議:
隨著庫(kù)的更新,運(yùn)行代碼的結(jié)果可能會(huì)發(fā)生變化,或者您的代碼可能會(huì)完全中斷。能夠重建您正在使用的軟件包和版本集非常重要。最佳做法是:
每個(gè)都有自己的元數(shù)據(jù)格式:
NumPy 不依賴于任何其他 Python 包,但是,它依賴于加速線性代數(shù)庫(kù),通常是?Intel MKL或?OpenBLAS。用戶不必?fù)?dān)心安裝這些(它們會(huì)自動(dòng)包含在所有 NumPy 安裝方法中)。高級(jí)用戶可能仍然想知道詳細(xì)信息,因?yàn)槭褂玫?BLAS 會(huì)影響磁盤上的性能、行為和大?。?/p>
除了安裝尺寸、性能和穩(wěn)健性之外,還有兩件事情需要考慮:
np.dot
,線程數(shù)由構(gòu)建時(shí)選項(xiàng)和環(huán)境變量決定。通常會(huì)使用所有 CPU 內(nèi)核。這有時(shí)對(duì)用戶來(lái)說是意料之外的;NumPy 本身不會(huì)自動(dòng)并行化任何函數(shù)調(diào)用。它通常會(huì)產(chǎn)生更好的性能,但也可能是有害的——例如,當(dāng)使用 Dask、scikit-learn 或多處理的另一個(gè)級(jí)別的并行化時(shí)。如果安裝失敗并顯示以下消息,請(qǐng)參閱疑難解答 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.
更多建議: