安装 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 的解决方案,我们建议:
管理软件包是一个具有挑战性的问题,因此,有很多工具。对于 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 从其自己的通道(通常是“defaults”或“conda-forge”)安装。PyPI 是迄今为止最大的软件包集合,但是,所有流行的软件包也都可以用于 conda。
第三个区别是 conda 是一个集成解决方案,用于管理软件包、依赖项和环境,而对于 pip,您可能需要另一个工具(有很多!)来处理环境或复杂的依赖项。
随着库的更新,运行代码的结果可能会发生变化,或者您的代码可能会完全中断。能够重建您正在使用的软件包和版本的集合非常重要。最佳实践是:
NumPy 不依赖于任何其他 Python 包,但是,它确实依赖于加速线性代数库 - 通常是 Intel MKL 或 OpenBLAS。用户不必担心安装这些库(它们已自动包含在所有 NumPy 安装方法中)。高级用户可能仍然希望了解详细信息,因为使用的 BLAS 会影响性能、行为和磁盘大小
PyPI 上的 NumPy wheel(pip 安装的内容)使用 OpenBLAS 构建。OpenBLAS 库包含在 wheel 中。这使得 wheel 更大,如果用户还安装了 (例如) SciPy,他们现在将有两个 OpenBLAS 副本在磁盘上。
在 conda defaults 通道中,NumPy 基于 Intel MKL 构建。当用户安装 NumPy 时,MKL 将作为单独的软件包安装在用户的环境中。
在 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 或 multiprocessing 一起使用另一层并行化时。如果您的安装失败并显示以下消息,请参阅 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.