numpy基础介绍

1 numpy 概述

numpy是Numerical Python的缩写,释义为数值的Python

numpy弥补了作为通用编程语言的Python在数值计算方面能力弱、速度慢的不足(numpy的底层是通过C语言编写的甚至汇编语言实现的,可以直接操作CPU)

numpy拥有丰富的数学函数、具有矢量运算能力,快速、节省空间,,强大的多维数组(矩阵运算)和优异的运算能力,此外也针对数组运算提供大量的数学函数库

numpy的存储效率和I/O性能优胜于python

numpy的模块是用C语言编写的,故不支持jython

2 numpy 安装

2.1 在线安装

python -m pip install numpy 或 pip install numpy

该种方式安装的是标准的numpy,当实际使用过程中除了安装标准的numpy外还有另外的组件——数学核心库mkl(inter(R) Math Kernel Library),即numpy + mkl

2.2 离线安装(一)

离线安装:pip install 路径+文件名

C:\WINDOWS\system32>pip install D:\numpy-1.13.3+mkl-cp36-cp36m-win_amd64.whl

出现报错:numpy-1.13.3+mkl-cp36-cp36m-win_amd64.whl is not a supported wheel on this platform.

 

查找原因尝试了一遍,问题依旧就有解决

>>> import pip
>>> print(pip.pep425tags.get_supported())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'pip' has no attribute 'pep425tags'

显示pip中没有pep425tags属性

此时查看pip帮助

>>> help(pip)
Help on package pip:

NAME
    pip

PACKAGE CONTENTS
    __main__
    _internal (package)
    _vendor (package)

VERSION
    10.0.1

FILE
    c:\users\z***g\appdata\local\programs\python\python36-32\lib\site-packages\pip\__init__.py

该pip package 中有package contents :_internal(package)和_vendor(package) ;

确实没有pep425tags,继续查看package

>>> help(pip._internal)
Help on package pip._internal in pip:

NAME
    pip._internal

PACKAGE CONTENTS
    basecommand
    baseparser
    build_env
    cache
    cmdoptions
    commands (package)
    compat
    configuration
    download
    exceptions
    index
    locations
    models (package)
    operations (package)
    pep425tags
    req (package)
    resolve
    status_codes
    utils (package)
    vcs (package)
    wheel

SUBMODULES
    bazaar
    deprecation
    git
    mercurial
    subversion

FUNCTIONS
    autocomplete()
        Command and option completion for the main option parser (and options)
        and its subcommands (and options).

        Enable by sourcing one of the completion shell scripts (bash, zsh or fish).

    check_isolated(args)

    create_main_parser()

    main(args=None)

    parseopts(args)

DATA
    absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0...
    commands_dict = {'check': <class 'pip._internal.commands.check.CheckCo...
    logger = <Logger pip._internal (WARNING)>

VERSION
    10.0.1

FILE
    c:\users\zyong\appdata\local\programs\python\python36-32\lib\site-packages\pip\_internal\__init__.py

我们明显看到了_internal package中有 pep425tags 属性

我们继续查看_vendor package

>>> help(pip._vendor)
Help on package pip._vendor in pip:

NAME
    pip._vendor

DESCRIPTION
    pip._vendor is for vendoring dependencies of pip to prevent needing pip to
    depend on something external.

    Files inside of pip._vendor should be considered immutable and should only be
    updated to versions from upstream.

PACKAGE CONTENTS
    appdirs
    cachecontrol (package)
    certifi (package)
    chardet (package)
    colorama (package)
    distlib (package)
    distro
    html5lib (package)
    idna (package)
    ipaddress
    lockfile (package)
    msgpack (package)
    packaging (package)
    pkg_resources (package)
    progress (package)
    pyparsing
    pytoml (package)
    requests (package)
    retrying
    six
    urllib3 (package)
    webencodings (package)

FUNCTIONS
    vendored(modulename)
        # Define a small helper function to alias our vendored modules to the real ones
        # if the vendored ones do not exist. This idea of this was taken from
        # https://github.com/kennethreitz/requests/pull/2567.

DATA
    DEBUNDLED = False
    WHEEL_DIR = r'C:\Users\zyong\AppData\Local\Programs\Python\Python36-32...
    absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0...

FILE
    c:\users\zyong\appdata\local\programs\python\python36-32\lib\site-packages\pip\_vendor\__init__.py

基于此,可以发现这可能是由于pip版本问题而产生的,依据pip 10.0.1 进行如下操作

>>> import pip._internal
>>> print(pip._internal.pep425tags.get_supported())
[('cp36', 'cp36m', 'win32'), ('cp36', 'none', 'win32'), 
('py3', 'none', 'win32'), ('cp36', 'none', 'any'), 
('cp3', 'none', 'any'), ('py36', 'none', 'any'), 
('py3', 'none', 'any'), ('py35', 'none', 'any'), 
('py34', 'none', 'any'), ('py33', 'none', 'any'),
 ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]
>>>

从上述内容可以看到,本pip并不支持numpy-1.13.3+mkl-cp36-cp36m-win_amd64.whl,

可以从python插件中找到32位numpy+mklhttps://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql

也即numpy-1.14.3+mkl-cp36-cp36m-win32.whl

在命令提示符CMD中执行:

C:\WINDOWS\system32>pip install D:\Software\Python\numpy-1.14.3+mkl-cp36-cp36m-win32.whl
Processing d:\software\python\numpy-1.14.3+mkl-cp36-cp36m-win32.whl
Installing collected packages: numpy
Successfully installed numpy-1.14.3+mkl

安装成功!

2.3 离线安装(二)

手动将whl改为zip后,将解压后的numpy,numpy-1.11.0.dist-info两个文件夹放入Python/Lib/site-packages中即可。
 
备注:pyCharm中File-Settings-Project:[Tutorial]-Projext Interperter中确认。[Tutorial]为工程文件名,根据实际情况发生改变。
该方法来源:http://blog.sina.com.cn/s/blog_c26084b90102x2k0.html
 
该方法仅验证了解压后的文件夹,没有继续尝试。
 
当然也有人依据pip支持形式对numpy+mkl文件名进行修改,也成功安装,暂未尝试。详见 https://blog.csdn.net/yxpyxp12341234/article/details/70436854
 

猜你喜欢

转载自www.cnblogs.com/gengyi/p/9142822.html
今日推荐