Python: NumPy

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 18:39

NumPy
NumPy — это библиотека с открытым исходным кодом для языка программирования Python. Возможности:
- поддержка многомерных массивов (включая матрицы);
- поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами.
В 1995 году программист Jim Hugunin написал библиотеку Numeric для языка Python. Библиотека развивалась при участии многих людей, среди которых были Jim Fulton, David Ascher, Paul DuBois и Konrad Hinsen. Библиотека доступна по сей день, считается вполне стабильной и полной, но устаревшей.
Предлагалось добавить Numeric в стандартную библиотеку языка Python, но Гвидо Ван Россум (автор Python) чётко дал понять, что код в его тогдашнем состоянии было невозможно поддерживать.
Кроме того, библиотека Numeric медленно обрабатывала большие массивы данных.
...
Сравнение с MATLAB
NumPy можно рассматривать как свободную альтернативу MATLAB. Язык программирования MATLAB внешне напоминает NumPy: оба они интерпретируемые, оба позволяют выполнять операции над массивами (матрицами), а не над скалярами. Преимущество MATLAB в наличии большого количества пакетов («тулбоксов»), например, Simulink (англ.). Для NumPy тоже существуют подобные «пакеты», например, библиотека SciPy предоставляет больше MATLAB-подобной функциональности, библиотека Matplotlib позволяет создавать графики в стиле MATLAB. И MATLAB, и NumPy для решения основных задач линейной алгебры используют код, основанный на коде библиотеки LAPACK.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 18:57

Olej писал(а):NumPy
Пока без комментариев ;-) ... зачем? и почему?
Но:
1. После значительного перерыва возвращаюсь к работе с Pyhon (именно как с приложениями и ЯП Python, а не в качестве каких-то примочек и использования специализированных пакетов для WEB-программирования);
2. Библиотека NumPy категорически нужна для всех, кто работает с обработкой сигналов, изображений и т.д. ... Мы уже встречались с этим пакетом в теме OpenCV и компьютерное зрение, но там мы на этом специально не останавливались.
Но вопрос (и в названной теме) состоит сначала в том, что NumPy нужно сначала установить - он не входит в стандартный комплект Python ... ну а затем ещё и испытать.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 19:03

Olej писал(а):что NumPy нужно сначала установить
Один из способов (и он успешно проходил в названной выше теме, но в стареньком дистрибутиве) - это:

Код: Выделить всё

[olej@xenix ~]$ dnf list '*numpy*'
Последняя проверка окончания срока действия метаданных: 13 days, 5:50:36 назад, Sat Jul  1 13:10:25 2017.
Доступные пакеты
python-numpy-stl-doc.x86_64                                                              2.2.3-1.fc25                                                                 updates
python-numpydoc.noarch                                                                   0.5-5.fc25                                                                   fedora 
python2-numpy.i686                                                                       1:1.11.2-1.fc25                                                              fedora 
python2-numpy.x86_64                                                                     1:1.11.2-1.fc25                                                              fedora 
python2-numpy-f2py.x86_64                                                                1:1.11.2-1.fc25                                                              fedora 
python3-numpy.x86_64                                                                     1:1.11.2-1.fc25                                                              fedora 
python3-numpy-f2py.x86_64                                                                1:1.11.2-1.fc25                                                              fedora 
python3-numpy-stl.x86_64                                                                 2.2.3-1.fc25                                                                 updates
python3-numpydoc.noarch                                                                  0.5-5.fc25                                                                   fedora 

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 19:15

Olej писал(а): Один из способов (и он успешно проходил в названной выше теме, но в стареньком дистрибутиве) - это:
Но именно потому, что он известен и проверен, я хочу в новой версии использовать другой, альтернативный способ - управление пакетами Python собственно средствами Python, пакет pip:

Код: Выделить всё

[olej@xenix authentication]$ python -m pip help

Usage:   
  /usr/bin/python -m pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output.
  --log <path>                Path to a verbose appending log.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each connection should attempt (default 5 times).
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --trusted-host <hostname>   Mark this host as trusted, even though it does not have valid or any HTTPS.
  --cert <path>               Path to alternate CA bundle.
  --client-cert <path>        Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check
                              Don't periodically check PyPI to determine whether a new version of pip is available for download. Implied with --no-index.

Код: Выделить всё

[olej@xenix authentication]$ python -m pip show numpy
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
И именно так оно и есть:

Код: Выделить всё

[olej@xenix ~]$ dnf list python*-pip*
Последняя проверка окончания срока действия метаданных: 13 days, 6:02:24 назад, Sat Jul  1 13:10:25 2017.
Установленные пакеты
python-pip.noarch                                                                     8.1.2-2.fc25                                                           @koji-override-0
python3-pip.noarch                                                                    8.1.2-2.fc25                                                           @koji-override-0
Доступные пакеты
python-django-pipeline.noarch                                                         1.3.24-5.fc25                                                          fedora          
Хотя это и весьма свежая система:

Код: Выделить всё

[olej@xenix authentication]$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 25 (Twenty Five)
Release:	25
Codename:	TwentyFive

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 19:23

Код: Выделить всё

[olej@xenix authentication]$ sudo pip install --upgrade pip
[sudo] пароль для olej: 
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 598kB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.2
    Uninstalling pip-8.1.2:
      Successfully uninstalled pip-8.1.2
Successfully installed pip-9.0.1

Код: Выделить всё

[olej@xenix authentication]$ pip -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
Как я понимаю, для Python 3 нужно проделать аналогичные вещи ... но оставим это на потом. ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 19:31

Код: Выделить всё

[olej@xenix authentication]$ python -m pip search numpy
afnumpy (1.0)                                        - A GPU-ready drop-in replacement for numpy
...
numpngw (0.0.6)                                      - Write numpy array(s) to a PNG or animated PNG file.
numpy-stl (2.2.3)                                    - Library to make reading, writing and modifying both binary and ascii STL files easy.
numpy-sugar (1.0.47)                                 - Missing NumPy functionalities.
numpy-quaternion (2017.07.13.12.10.29.dev114912538)  - 
numpy (1.13.1)                                       - NumPy: array processing for numbers, strings, records, and objects.
numpy_display (1.2.0)                                - Formats numpy matrices in an IPython Notebook
numpy_groupies (0.9.6)                               - Optimised tools for group-indexing operations: aggregated sum and more.
numpy_ringbuffer (0.2.1)                             - Ring buffer implementation for numpy
numpydoc (0.7.0)                                     - Sphinx extension to support docstrings in Numpy format
numpysane (0.8)                                      - more-reasonable core functionality for numpy
numpyson (0.4)                                       - 
numpythia (0.3.0)                                    - The interface between PYTHIA and NumPy
numpyx (0.1.4)                                       - Utility functions for numpy, written in cython
...

Код: Выделить всё

[olej@xenix authentication]$ python -m pip search numpy | wc -l
199
Вот столько пакетов Python наворочено на сегодня вокруг NumPy! :-o

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 19:35

Olej писал(а):
Olej писал(а): Один из способов (и он успешно проходил в названной выше теме, но в стареньком дистрибутиве) - это:
Но именно потому, что он известен и проверен, я хочу в новой версии использовать другой, альтернативный способ - управление пакетами Python собственно средствами Python, пакет pip:
Такая установка всё равно потребует от вас прав root:

Код: Выделить всё

[olej@xenix authentication]$ python -m pip install numpy
Collecting numpy
  Downloading numpy-1.13.1-cp27-cp27mu-manylinux1_x86_64.whl (16.6MB)
    100% |████████████████████████████████| 16.6MB 52kB/s 
Installing collected packages: numpy
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/usr/lib/python2.7/site-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/usr/lib/python2.7/site-packages/pip/wheel.py", line 345, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/lib/python2.7/site-packages/pip/wheel.py", line 316, in clobber
    ensure_dir(destdir)
  File "/usr/lib/python2.7/site-packages/pip/utils/__init__.py", line 83, in ensure_dir
    os.makedirs(path)
  File "/usr/lib64/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Отказано в доступе: '/usr/lib64/python2.7/site-packages/numpy-1.13.1.dist-info'
[olej@xenix authentication]$ 
А вот так оно станет правильно:

Код: Выделить всё

[olej@xenix authentication]$ sudo python -m pip install numpy
[sudo] пароль для olej: 
Collecting numpy
  Downloading numpy-1.13.1-cp27-cp27mu-manylinux1_x86_64.whl (16.6MB)
    100% |████████████████████████████████| 16.6MB 52kB/s 
Installing collected packages: numpy
Successfully installed numpy-1.13.1

Код: Выделить всё

[olej@xenix authentication]$ pip -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 20:34

Olej писал(а): Но именно потому, что он известен и проверен, я хочу в новой версии использовать другой, альтернативный способ - управление пакетами Python собственно средствами Python, пакет pip:
Отвлекусь чуть в сторону: то же самое, но DEB-дистрибутивы:

Код: Выделить всё

olej@nvidia ~ $ lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description:    Linux Mint 18.1 Serena
Release:        18.1
Codename:       serena

olej@nvidia ~ $ python --version
Python 2.7.12
Здесь всё ещё хуже - здесь не установлен пакет pip:

Код: Выделить всё

olej@nvidia ~ $ which pip

olej@nvidia ~ $ python -m pip help
/usr/bin/python: No module named pip
Начинать нужно, получается, с его установки:

Код: Выделить всё

olej@nvidia ~ $ apt search python-pip
p   python-pip                      - alternative Python package installer
p   python-pip-whl                  - alternative Python package installer

olej@nvidia ~ $ apt search python3-pip
p   python3-pip                     - alternative Python package installer - Pyt

Код: Выделить всё

olej@nvidia ~ $ apt install python-pip
[sudo] пароль для olej: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  python-pip-whl
Рекомендуемые пакеты:
  build-essential python-all-dev python-setuptools python-wheel
НОВЫЕ пакеты, которые будут установлены:
  python-pip python-pip-whl
обновлено 0, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1 255 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 1 854 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-pip-whl all 8.1.1-2ubuntu0.4 [1 110 kB]
Пол:2 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-pip all 8.1.1-2ubuntu0.4 [144 kB]
Получено 1 255 kБ за 0с (1 578 kБ/c) 
Выбор ранее не выбранного пакета python-pip-whl.
(Чтение базы данных … на данный момент установлено 309925 файлов и каталогов.)
Подготовка к распаковке …/python-pip-whl_8.1.1-2ubuntu0.4_all.deb …
Распаковывается python-pip-whl (8.1.1-2ubuntu0.4) …
Выбор ранее не выбранного пакета python-pip.
Подготовка к распаковке …/python-pip_8.1.1-2ubuntu0.4_all.deb …
Распаковывается python-pip (8.1.1-2ubuntu0.4) …
Обрабатываются триггеры для man-db (2.7.5-1) …
Настраивается пакет python-pip-whl (8.1.1-2ubuntu0.4) …
Настраивается пакет python-pip (8.1.1-2ubuntu0.4) …

Код: Выделить всё

olej@nvidia ~ $ which pip
/usr/bin/pip

olej@nvidia ~ $ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 20:41

Olej писал(а): Начинать нужно, получается, с его установки:
...

Код: Выделить всё

olej@nvidia ~ $ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
Сразу же обновить его средствами Python (не дистрибутива) будет не лишним:

Код: Выделить всё

olej@nvidia ~ $ python -m pip show numpy
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Что-то он ругнулся слегка:

Код: Выделить всё

olej@nvidia ~ $ sudo pip install --upgrade pip
The directory '/home/olej/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/olej/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 696kB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-9.0.1
Но разбираться не стал, потому как:

Код: Выделить всё

olej@nvidia ~ $ pip -V
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python: NumPy

Непрочитанное сообщение Olej » 14 июл 2017, 20:48

Относительно NumPy здесь картина в точности аналогичная:

Код: Выделить всё

olej@nvidia ~ $ python -m pip search numpy | wc -l
199
И это, пожалуй, так и должно быть, потому что определяется уже не дистрибутивом, а пакетной системой Python!

Код: Выделить всё

olej@nvidia ~ $ sudo python -m pip install numpy
The directory '/home/olej/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/olej/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting numpy
  Downloading numpy-1.13.1-cp27-cp27mu-manylinux1_x86_64.whl (16.6MB)
    100% |████████████████████████████████| 16.6MB 69kB/s 
Installing collected packages: numpy
Successfully installed numpy-1.13.1

Код: Выделить всё

olej@nvidia ~ $ python -m pip show numpy
Name: numpy
Version: 1.13.1
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: numpy-discussion@python.org
License: BSD
Location: /usr/local/lib/python2.7/dist-packages
Requires: 

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей