numpy源码目录说明_numpy库源代码

hacker|
117

文章目录:

linux下怎么在python中安装numpy模块

可以使用两种方式进行安装:

第一种是采用pip方式,但这种方式下载太慢了,建议放弃。

第二种采用源码安装,步骤如下:

1.下载源码包

wget 

2.解压 

unzip numpy-1.9.0.zip

3.进入解压目录 

cd numpy-1.9.0

4.运行解压目录里的setup.py 文件(root环境下) 

python setup.py install

怎样阅读numpy源码

在本地是已经编译过的pyd文件,要看源代码可以去github看

ithub.com/numpy/numpy

怎么源码编译依赖LAPACK和ATLAS库的NumPy包

1. GCC版本要求

使用较新版本的GCC工具集(尽量不低于v4.7)且集成有gfortran编译器。

备注1:这里大写的"GCC"是指GNU Compiler Collection,它除包含C语言编译器gcc外,还包含很多其它语言的编译器(如g++/gfortran等)

备注2:3.x版的的C语言编译器gcc会由于某些头文件缺失导致编译atlas库报错

备注3:若GCC工具集中没有gfortran编译器,则编译lapack库时会遇到一些莫名其妙的错误(因为lapack是用fortran编写的),好在GCC4.7及以上版本中已经集成了gfortran编译器

在GCC版本符合要求的前提下,临时将其加入环境变量PATH并设置动态库查找路径:

[plain] view plain copy

在CODE上查看代码片派生到我的代码片

    $ export PATH=/home/slvher/tools/gcc48/bin/:$PATH  

    $ export LD_LIBRARY_PATH=/home/slvher/tools/gcc48/lib64:/home/slvher/tools/gcc48/lib  

备注4:在当前shell会话中临时设置LD_LIBRARY_PATH可以保证编译过程中正确搜索到GCC库,但最好不要设置到.bash_profile中,因为那样会影响其它程序的查找路径,可能会踩到坑。

备注5:这里提到的GCC的版本要求及环境变量设置如果没有出差错,那么下面的编译会比较顺利,否则会遇到各种编译/链接问题,后续我会用一篇笔记来记录这些踩坑的过程及遇到这些诡异问题时的分析思路,这里不赘述。

2. 编译LAPACK和ATLAS库

lapack是用fortran开发的经过特别优化的线性代数计算库;atlas也是一个优化过的线性代数计算库,它提供了BLAS库的全部API(包括C接口和Fortran接口),还实现了lapack库中的部分函数,atlas在编译过程中会根据机器的配置参数来调整科学计算函数的参数,以便在该机器上达到更好的计算性能。

初看起来,需要分别编译lapack和atlas两个库,所幸的是,atlas库支持编译时自动编译lapack库,因此,只需正确完成atlas库的编译配置,编译atlas库就可以了。

下面是编译atlas/lapack库的主要步骤。

1) 分别从官网下载lapack源码包和atlas源码包,我下载的是目前的最新版lapack-3.5.0.tgz及atlas3.10.2.tar.bz2

2) 解压atlas源码压缩包:tar -jxvf atlas3.10.2.tar.bz2

3) cd ATLAS mkdir BLDdir cd BLDdir

4) 执行configure命令以配置编译参数

[plain] view plain copy

在CODE上查看代码片派生到我的代码片

    $ ../configure --shared -b 64 --prefix=/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs --with-netlib-lapack-tarfile=/home/slvher/tools/scikit-learn-virtualenv/dep-libs/lapack-3.5.0.tgz   

其中,--shared表明要编译atlas共享库(configure会自动在编译命令中插入"-fPIC"参数,无需在这里显式指定);--prefix指定编译结果的安装路径;--with-netlib-lapack-tarfile表明编译atlas库时会用相同的编译器及编译/链接参数自动编译lapack库,这里指定lapack源码包的路径后,configure运行后会自动解压lapack源码并将其拷贝至BLDdir/src/lapack/reference/这个目录下。

5) configure运行完后,BLDdir目录下生成了Make.inc文件,该文件中设置了众多编译参数(如查找路径、编译产出路径、编译器、传给编译器的参数,等等),BLDdir子目录下很多模块的Makefile都会include这个Make.inc,包括源码独立的lapack包,可见,这个Make.inc文件可以达到统一编译环境的目的。

6) make build

7) make check

8) make ptcheck

9) make install

如果上述一系列命令均执行成功,那么编译完成的*.a和*.so库会安装到--prefix参数指定的路径下,这些库的头文件也会被拷贝到安装路径下的include目录。

至此,ATLAS和LAPACK库均完成编译,其中LAPACK库是.a静态库,ATLAS库是.so动态库。事实上,ATLAS的动态库中已经包含了LAPACK静态库的所有符号和代码。

下面可以开始编译依赖LAPACK和ATLAS库的NumPy包了。

3. 编译优化版NumPy包

前提:官网下载NumPy源码包并解压,这里以目前最新版numpy-1.9.2.tar.gz为例进行说明。

1) cd至解压目录numpy-1.9.2

2) cp site.cfg.example site.cfg

3) 在site.cfg中配置atlas项,其中include_dirs和library_dirs是atlas库安装路径下的include和lib目录

[plain] view plain copy

在CODE上查看代码片派生到我的代码片

    [atlas]  

    atlas_libs   = lapack,f77blas,cblas,atlas  

    library_dirs = /home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib  

    include_dirs = /home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include  

4) python setup.py config

5) python setup.py build --fcompiler=gnu95 ## 指定Fortran编译器为GCC4.8工具集中的gfortran

6) python setup.py install

正常情况下,build成功后,install会把编译产出拷贝到当前python解释器安装路径下的lib/python2.7/site-packages目录中。

此时,可以通过下面的例子来查看NumPy包的配置情况:

[python] view plain copy

在CODE上查看代码片派生到我的代码片

     import numpy as np  

     np.__config__.show()  

    atlas_3_10_blas_threads_info:  

        libraries = ['lapack', 'f77blas', 'cblas', 'atlas']  

        library_dirs = ['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib']  

        define_macros = [('HAVE_CBLAS', None), ('ATLAS_INFO', '"\\"3.10.2\\""')]  

        language = c  

        include_dirs = ['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include']  

    lapack_opt_info:  

        libraries = ['tatlas', 'lapack', 'f77blas', 'cblas', 'atlas']  

        library_dirs = ['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib']  

        define_macros = [('ATLAS_INFO', '"\\"3.10.2\\""')]  

        language = f77  

        include_dirs = ['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include']  

    blas_opt_info:  

        libraries = ['lapack', 'f77blas', 'cblas', 'atlas']  

        library_dirs = ['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib']  

        define_macros = [('HAVE_CBLAS', None), ('ATLAS_INFO', '"\\"3.10.2\\""')]  

        language = c  

        include_dirs = ['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include']  

    openblas_info:  

      NOT AVAILABLE  

    openblas_lapack_info:  

      NOT AVAILABLE  

    atlas_3_10_threads_info:  

        libraries = ['tatlas', 'lapack', 'f77blas', 'cblas', 'atlas']  

        library_dirs = ['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib']  

        define_macros = [('ATLAS_INFO', '"\\"3.10.2\\""')]  

        language = f77  

        include_dirs = ['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include']  

    lapack_mkl_info:  

      NOT AVAILABLE  

    blas_mkl_info:  

      NOT AVAILABLE  

    mkl_info:  

      NOT AVAILABLE  

也可以用具体的例子来验证其功能是否正常:

[python] view plain copy

在CODE上查看代码片派生到我的代码片

     import numpy as np  

     np.arange(15).reshape(3, 5)  

    array([[ 0,  1,  2,  3,  4],  

           [ 5,  6,  7,  8,  9],  

           [10, 11, 12, 13, 14]])  

       

     a = np.arange(15).reshape(3, 5)  

     a  

    array([[ 0,  1,  2,  3,  4],  

           [ 5,  6,  7,  8,  9],  

           [10, 11, 12, 13, 14]])  

     type(a)  

    type 'numpy.ndarray'  

      

      

     from numpy.linalg import *  

     b = np.array([[1.0, 2.0], [3.0, 4.0]])  

     b  

    array([[ 1.,  2.],  

           [ 3.,  4.]])  

     b.transpose()  

    array([[ 1.,  3.],  

           [ 2.,  4.]])  

     inv(b)  

    array([[-2. ,  1. ],  

           [ 1.5, -0.5]])  

    

有人安装过numpy这个工具没

第一种方法是安装基于Python开发的完整的软件(Software Distribution),这些软件里一般继承了很多python扩展包,还有一些其他的实用的的工具,比如IPython,Spyder等。这种方法的有点就是简单,一劳永逸,傻瓜式安装,就跟安装普通的程序一样,并且一下就安装了很多扩展包;缺点就是体积略大,一般要删除之前的纯净版Python,因此之前如果有东西(比如Python的IDE)的配置是基于之前的纯净版Python的话,就需要重新配置了。当然这些也都很简单,新安装的Python一般就在这些软件的某个文件夹里。 SciPy的官网就有这些软件的安装地址,链接在这里:我是传送门 其中Python(x,y)貌似比较有名,国内有人还基于这个软件写了本科学计算的书,叫《Python科学计算》 大家喜欢哪个就下哪个好啦~ 第二种方法是安装Python扩展包,由于SciPy是基于NumPy的,所以需要先安装NumPy,再安装SciPy。这种方法稍微麻烦一点,但是也能在10分钟内搞定(不算下载时间)。优点就是安装的东西体积小,也不用伤筋动骨的删以前的Python NumPy下载链接在这里:我是传送门 Windows系统的话直接下对应的exe文件就好,点开就直接装了,简单易行。Linux系统就要下载tar包了,然后cd到对应目录执行python setup.py build, python setup.py install应该就可以了(没试过,不过一般都这样) SciPy下载链接在这里:源码包,可执行文件 Windows下直接下载可执行文件,直接就能装了。Linux下还是要下源码包,然后用上面的方法安装(同没试过,不过应该是这样) 测试是否安装成功: NumPy的话,在IDLE里面执行importnumpy,如果没报错一般就安装好了 SciPy的话,在IDLE里面执行importscipy,如果没报错一般就安装好了

在python中,怎么查看numpy模块中的exp函数源代码

pip install ipython

ipython

一般来说这样就能看到源代码了,不过numpy好像比较特殊,可以参考如下方法:

安装pipenv,

用pipenv打开numpy源码

$ pipenv --three

$ python3.6 -c "from pathlib import Path;fn='Pipfile';Path(fn).write_text(Path(fn).read_text().replace('pypi.org', 'mirrors.aliyun.com/pypi'))"

$ pipenv shell

$ pipenv install numpy

$ pipenv open numpy

mac os x安装python科学计算库numpy

安装前必须知道的工作:

1、MAC OS 一般都自带 MAC Python,Apple自己扩展的版本。例如,Lion是64位Python版本,自带与Objctive C库的接口模块以及Apple系统的接口模块。但安装第三方与C、Fortran等相关的的Python模块时,就必须从源码编译或使用专门编译的64位二进制发行版。

2、安装Python官方程序。从兼容的角度,Mac上可以安装官方2.X版本。官方程序对MAC的支持和UNIX是一样的,但与第三方模块的兼容性无疑会更有保障。通常可以直接安装许多二进制发行版。

3、本文关注在MAC Python上安装Scipy等模块。如果你使用官方Python版本,请直接访问官方网站。

安装工作:

1、安装gFortran。由于部分库函数是用Fortran实现的,所以要安装与Xcode4.2兼容的Fortran编译器。目前,没有官方版本,请在这里下载。安装后就可以使用gFortran了。如果你使用Xcode4.1或以前版本,请直接按Scipy官方网页指令安装。

2、自己从源代码编译,通常会需要解决太多问题。已有人编译了实用于Lion和雪豹的64位版本,网页这里。在命令行中使用如下命令下载:

$ git clone git://github.com/fonnesbeck/ScipySuperpack

下载目录中包含安装脚本和一组*.egg文件。

3、使用BBEdit或其他文本编辑工具编辑install_superpack.sh,删除安装Fortran的那段脚本。然后保存。

4、在命令行中使用如下命令:

$ sh install_superpack.sh

输入y。 (不要输入n!!!和网页上说明的不一样)

输入你的开机密码(管理员权限),然后就自动安装好了。

5、测试。输入python

import numpy as np

np.test('full')

import scipy

scipy.test()

注意:有一些failure。

5条大神的评论

  • avatar
    访客 2022-07-02 下午 04:29:22

    下,这些库的头文件也会被拷贝到安装路径下的include目录。至此,ATLAS和LAPACK库均完成编译,其中LAPACK库是.a静态库,ATLAS库是.so动态库。事实上,ATLAS的动态库中已经

  • avatar
    访客 2022-07-02 上午 10:23:35

    C的版本要求及环境变量设置如果没有出差错,那么下面的编译会比较顺利,否则会遇到各种编译/链接问题,后续我会用一篇笔记来记录这些踩坑的过程及遇到这些诡异问题时的分析思路,这里不赘述。2. 编译LAPACK和ATLAS库lapack是用fortran开发的经过特别优化

  • avatar
    访客 2022-07-02 上午 10:33:10

     [10, 11, 12, 13, 14]])       type(a)      type 'numpy.ndarray'                   fro

  • avatar
    访客 2022-07-02 下午 04:40:10

    的的工具,比如IPython,Spyder等。这种方法的有点就是简单,一劳永逸,傻瓜式安装,就跟安装普通的程序一样,并且一下就安装了很多扩展包;缺点就是体积略大,一般要删除之前的纯净版Python,因此之前如果有东

  • avatar
    访客 2022-07-02 下午 04:46:39

    env/dep-libs/sklearn-libs/include']      openblas_info:        NOT AVAILABLE      openblas_lapack_info:        NOT AVAILABLE      atlas

发表评论