Numpy 中文文档 安装Numpy
Contents
安装numpy的唯一前提条件是python本身已经安装。如果还没有安装python,并且想以最简单的方式开始学习,我们建议下载使用Anaconda(如果访问国外仓库很慢,可以使用 清华开源软件镜像站1下载anaconda安装包) - 它包含了python、Numpy、和其他许多科学计算和数据科学的常用库
Numpy可以通过conda、通过pip、通过使用macos或者linux上的包管理器来安装,也可以通过编译源码来实现安装。更多详细信息、参考下面的python和numpy安装部分。
CONDA
如果使用conda,那么可以从默认仓库或者conda-forge仓库来安装Numpy:
|
|
PIP
如果使用pip,安装numpy命令如下:
|
|
同样,使用pip时,创建虚拟环境也是良好的实践 - 参考下面的可重现的安装和本文了解使用虚拟环境的细节
安装验证
|
|
python和numpy安装
Python中安装和管理包很复杂、对多数任务来说一般存在一定数量的可选择方案。本文试着让读者了解最佳的(或者是最流行的)解决方案,并给出明确建议。
推荐安装建议
我们基于读者的熟悉程度和对操作系统的偏好给出我们的建议, 如果在“新手”和“高级”中间、请选择"新手"以保持简单、 或者选择“高级”以遵循最佳实践并在未来运行的更持久些。
新手
在所有Windows、macOS、和linux系统中:
安装Anaconda(包括了所有需要的库以及下面提及的所有其他的工具)
- 使用Jupyter Notebook进行探索性的、交互性的编写和执行代码
- 使用Spyder或者Visual Studio Code编写脚本和库
- 使用Anaconda navigator来管理库和启动Jupyter2,Spyder3,或者Visual Studio Code4。
高级用户
使用CONDA的高级用户
安装 Miniforge
保持conda base环境精简、使用当前任务或者项目所在的一个或者多个conda环境来安装库
更喜欢 PIP/PYPI的高级用户
对于从个人偏好或者阅读下面的conda和pip之间主要区别的的用户,如果更喜欢pip/基于pypi的方案,我们建议:
从python.org下载安装python,或者使用Homebrew或者其他的Linux库管理器来安装python。 使用当前维护最好的Poetry5工具来提供类似conda方式的依赖解析和环境管理能力。
PYTHON包管理
在PYTHON中管理包很有挑战性,由此,当前有许多工具可用。
对于Web开发和通用目的python开发,使用pip提供了大量的包可用。
对于高性能计算(HPC),可以考虑Spack6工具。
对大多数numpy使用者,conda和pip是最流行的包管理工具。
PIP & CONDA 比较
安装python包的两个主要工具是 pip 和 conda。 它们的功能也有部分重叠(比如、都可以安装numpy)。 然而,它们也能一起配合提供功能。 这里我们要讨论下pip和conda之间的最大不同–理解这个不同对于高效管理包非常重要
第一个不同、conda是跨语言的工具、它可以安装python语言,而pip是在你系统中特定python版本中安装的工具,pip后续安装的其他包也是为此相同python安装使用的。这个不同也意味着conda可以安装你可能需要的非python的库和工具(比如、各种编译器、CUDA、HDF5), 而pip没有这样的功能。
第二个不同、pip从python索引库PYPI(Python Packaging Index)安装各种库,而conda从自己的频道(一般是"defaults"或者"conda-forge"). 目前为止、PYPI拥有最多的包集合,不过所有的流行的包在conda内也都有。
第三个不同、conda是包管理、包依赖管理和开发环境管理的集成方案,而使用pip就可能需要其他工具(非常多!)来管理开发环境或者复杂的依赖关系。
可重现的安装
随着包更新、代码运行的结果可能改变,甚至你的代码可能会完全崩溃。因此,拥有重新构建项目所使用包的集合以及相应版本就很重要。
这方面最佳实践包括:
对每个进行的项目使用不同的环境, 使用库安装工具记录下包的名称和版本; 以下每个记录文件中包含对应的元数据格式:
- Conda: conda环境和环境文件environment.yml
- Pip: 虚拟环境和环境文件 requirements.txt
- Poetry: 虚拟环境和环境文件 pyproject.toml
Numpy库 & 加速线性代数库
虽然Numpy不依赖与任何其他python包,但是,它确实依赖于加速线性代数库-典型的是Intel MKL或者OpenBLAS. 普通用户不必但系这些(在所有numpy安装方法中已经自动包含了这个). 超级用户可能还是需要知道这个细节、应为使用的BLAS可能影响性能、库的表现ß和磁盘大小。
在普通索引库中的Numpy wheels文件,也就是pip命令安装的numpy,是使用OpenBLAS构建的。在wheel文件中包含了这个OpenBLAS文件、这导致wheel文件很大,并且如果用户也安装了(比如)Scipy,那么就会在磁盘上有了OpenBLAS的两份拷贝。
在conda默认频道安装的numpy,使用了Intel MKL构建。MKL是一个单独的库,在安装Numpy的时候在用户的环境中会安装MKL。
在conda-forge频道,Numpy构建使用了一个dummy假的 “BLAS”包。当用户从conda-forge下载安装numpy时候,同时也选择这个BLAS库的某个实现来安装 - 默认是 OpenBLAS,但是它也可以是MKL(从默认频道安装的)、甚至BLIS或者参考的BLAS.
MKL库比OpenBLAS大很多,它占用约700 MB的磁盘,而OpenBLAS仅仅 30 MB。
MKL 通常会快一点、健壮一点,相对于OpenBLAS
除了以上的磁盘大小、性能和健壮性、还有如下两点需要考虑:
Intel MKL不是开源的库。正常使用的这不是问题、但是如果用户需要再次分发使用numpy构建的应用,这可能成为一个问题。 MKL和OpenBLAS都利用多线程来处理如np.dot类的函数调用,线程的数量由编译时参数和运行环境变量来决定。 通常这回使用所有的CPU核心。这对用户来说是非预期的。Numpy本身不会自动并行化任何函数调用。多线程通常会产生更好的效率,但是也可能有害 -比如使用另外层次的并行化处理,如Dask、scikit-learn或者多进程处理。
相关网站
- Numpy官网: https://www.numpy.org
- Numpy官网文档: https://numpy.org/doc
- Mailing list: https://mail.python.org/mailman/listinfo/numpy-discussion
- Source code: https://github.com/numpy/numpy
- 清华大学Anaconda镜像站 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
Anaconda 安装包也可以到清华大学开源软件镜像站TUNA下载,链接是https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ ↩︎
Jupyter Notebook https://jupyter.org/ ↩︎
Spyder IDE https://www.spyder-ide.org/ ↩︎
Visual Studio Code https://code.visualstudio.com/ ↩︎
Poetry https://python-poetry.org/ ↩︎
Spack is a package manager for supercomputers,linx and macOS https://spack.io/ ↩︎