Numpy 安装 >
NumPy的唯一前提条件是Python本身。如果您还没有Python并且想要最简单的入门方法,我们建议您使用Anaconda发行版 -它包括Python,NumPy和其他用于科学计算和数据科学的常用软件包。
NumPy的可以安装conda
,用pip
,或在Mac OS和Linux的软件包管理器。有关更多详细说明,请参阅下面的Python和NumPy安装指南。
如果您使用conda
,则可以使用以下命令进行安装:
conda install numpy
如果您使用pip
,则可以使用以下命令进行安装:
pip install numpy
在Python中安装和管理软件包非常复杂,对于大多数任务,有许多替代解决方案。本指南试图使读者对最佳(或最受欢迎)解决方案有所了解,并给出明确的建议。它侧重于在常见的操作系统和硬件上使用Python,NumPy和PyData(或数值计算)堆栈的用户。
我们将从基于用户的经验水平和感兴趣的操作系统的建议开始。如果您介于“入门”和“高级”之间,则要保持简单,请选择“入门”,如果要按照未来的最佳做法工作,请选择“高级”。 。
在所有Windows,macOS和Linux上:
base
conda环境保持在最小限度,并使用一个或多个
conda环境
安装您正在执行的任务或项目所需的软件包。defaults
频道中的软件包感到满意,否则请conda-forge
通过设置频道优先级来设置默认频道。如果您对稍有过时的软件包感到满意,并且相对于能够使用最新版本的库而更喜欢稳定性,则:
pip install somepackage --user
。如果您使用GPU:
base
conda环境保持在最小限度,并使用一个或多个
conda环境
安装您正在执行的任务或项目所需的软件包。defaults
conda通道(conda-forge
尚未对GPU软件包提供良好的支持)。除此以外:
对于从个人喜好或下面的内容了解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。
第三个差异是pip没有依赖解析器(预计不久后会改变),而conda却没有。对于简单的情况(例如,您只想要NumPy,SciPy,Matplotlib,Pandas,Scikit-learn和其他一些程序包)并不重要,但是,对于复杂的情况,可以期望conda可以做得更好,可以使一切正常运行一起。不利的一面是,使用pip进行安装通常比使用conda进行安装要快得多。
第四个区别是conda是用于管理软件包,依赖项和环境的集成解决方案,而使用pip则可能需要另一个工具(有很多!)来处理环境或复杂的依赖项。
使所有软件包的安装,分析,库或应用程序依赖于可重复性非常重要。听起来很明显,但是大多数用户并不打算这样做(至少直到为时已晚)。
Python打包的问题是,迟早会有问题。这种情况并不常见
XKCD插图-Python环境退化
但随着时间的推移,它的确会降级。因此,重要的是能够删除和重建已安装的软件包集。
最佳实践是在您正在处理的每个项目中使用不同的环境,并在静态元数据文件中至少记录直接依赖的程序包的名称(最好是版本)。每个包装工具都为此具有自己的元数据格式:
有时,为小任务创建新环境并在新环境之间进行切换会产生过多的开销。在这种情况下,我们建议您不要在基本环境中安装太多软件包,而以其他方式跟踪软件包的版本(例如,文件内的注释,或numpy.__version__
在将其导入笔记本电脑后进行打印)。
NumPy不依赖于任何其他Python软件包,但是它依赖于加速的线性代数库-通常为 Intel MKL或 OpenBLAS。用户不必担心安装它们,但是了解打包的完成方式以及它如何影响用户看到的性能和行为可能仍然很重要。
PyPI上安装的NumPy轮子(是pip安装的)是使用OpenBLAS构建的。OpenBLAS库随附在轮子本身中。这使这些轮子更大,并且如果用户也安装(例如)SciPy,则现在磁盘上将有两个OpenBLAS副本。
在conda默认频道中,NumPy是针对Intel MKL构建的。MKL是一个单独的软件包,将在用户安装NumPy时安装在用户的环境中。MKL软件包比OpenBLAS大很多,只有数百MB。MKL通常比OpenBLAS更快,更强大。
在conda-forge渠道中,NumPy是针对虚拟“ BLAS”封装构建的。当用户从conda-forge安装NumPy时,该BLAS软件包将与实际库一起安装-默认为OpenBLAS,但也可以是MKL(来自默认通道),甚至是 BLIS或参考BLAS。
除了安装大小,性能和健壮性之外,还有两点要考虑:
np.dot
,线程数由构建时选项和环境变量确定。通常,将使用所有CPU内核。有时这对于用户来说是意料之外的。NumPy本身不会自动并行化任何函数调用。例如,当手动或与Dask或scikit-learn功能一起使用另一级别的并行化时,它也可能对性能有害。