2. Установка NumPy

2.1. NumPy в составе научных дистрибутивов Python

2.1.1. Anaconda

Пожалуй, самый лучший способ установки и использования стека пакетов SciPy, (в том числе и NumPy) является установка дистрибутива Anaconda. Устанавливая данный дистрибутив, вы устанавливаете несколько сотен (порядка 400, в зависимости от используемой вами платформы) самых разных пакетов. Может показаться избыточным, но на деле это оказывается очень удобным - практически все, что может вам понадобится, находится у вас под рукой. Так же вы получаете интерактивную оболочку IPython в привлекательной web-обертке Jupyter. В такой среде очень удобно работать. Например на картинке ниже показано, как выглядит создание матрицы из случайных чисел размером 10х10 и оформлен ее удобный для восприятия вывод с помощью библиотеки SymPy.

Чтобы установить дистрибутив Anaconda, сначала его нужно скачать с официального сайта. Прежде чем нажимать кнопку "download", уточните параметры своей платформы (допустим, у меня это Linux-x86 32 bit). Пока идет скачивание и установка, вы можете изучить доступные в вашем дистрибутиве пакеты и документацию к ним. Думаю, даже после беглого просмотра, вы убедитесь, что вы действительно имеете под рукой очень и очень много самых разнообразных инструментов.

Не смотря на то, что Anaconda сейчас является лидирующим по популярности дистрибутивом Python, не стоит забывать о других дистрибутивах. Все они предоставляют возможность работы со стеком SciPy и NumPy в частности. Помимо прочего, так же как и Anaconda они включают множество научных и вспомогательных библиотек. Однако, все они имеют значительные отличия от Anaconda.

2.1.2. ActivePython

Коммерческий (бесплатный период 30 дней) дистрибутив Python, предназначенный для быстрого внедрения и сопровождения серьезных проектов на базе Python. Содержит предварительно скомпилированные и настроенные решения практически для всех ключевых отраслей, что позволяет значительно сократить время на установку и настройку. Может быть установлен на целый ряд операционных систем. Содержит удобные инструменты для работы в Windows.

ActivePython полностью защищает от всех рисков, связанных с использованием ПО под лицензией GNU/GPL. Все пакеты доступные в собственном репозитории проверяются на безопасность и являются защищенными. Данный дистрибутив всегда включает только последнюю версию OpenSSL. Содержит обширную документацию, но при этом сама организация-разработчик обеспечивает техническую поддержку и всегда дает ответы даже на самые сложные вопросы.

2.1.3. Enthought Canopy

Данный дистрибутив предоставляет, как интерактивную среду, так и собственную среду разработки, причем вы не ограничены какой-то одной версией Python, а можете сами выбирать с какой именно версией Python вы будете работать к примеру 2.7 или 3.5. При этом вы так же имеете доступ к более чем 450 пакетам.

Весьма интересной особенностью Enthought Canopy является работа с научными и аналитическими пакетами. В вашем распоряжении появляется графический менеджер пакетов, который позволяет гибко манипулировать всеми пакетами и их зависимостями. При этом гарантируется что вы имеете доступ к самым стабильным (проверенным) версиям пакетов. Это не означает, что в других дистрибутивах не следят за включаемыми в них пакетами, но Enthought подчеркнуто гарантирует это.

Enthought Canopy включает в себя редактор кода, интегрированное окно IPython в оболочке Jupyter, интерактивный графический отладчик и встроенные инструменты импорта данных. Нельзя не упомянуть о MayaVi - визуализаторе научных данных и BlockCanvasи - визуализаторе для создания имитационных экспериментов. При этом вы имеете мгновенный доступ к пакетной документации, что весьма и весьма удобно.

Enthought Canopy способен работать с Eхcel и LabVIEW, имеет собственный сервер для совместной работы в рамках частных сетей, и имеет много других способов для интеграции в существующую инфраструктуру. Конечно за дополнительные возможности наверняка придется заплатить, но бесплатная версия прекрасно подойдет для научных и инженерных расчетов.

2.1.4. Intel® Distribution for Python

Данный дистрибутив является бесплатным и предоставляет собой высокоскоростную реализацию Python и большого количества научных пакетов. Например, в зависимости от испльзуемого процессора, производительность NumPy, SciPy и numexpr благодаря библиотеке Intel® Math Kernel Library может превосходить производительность тех же библиотек на тех же процессорах от 1,3 до нескольких тысяч раз.

Данный дистрибутив не так прост в установке и настройке, как другие и содержит не так много научных пакетов в своем составе. Но он очень хорошо задокументирован и недостающие пакеты могут быть легко установленны с помощью менеджера пакетов Conda. Помимо прочего, вместе с данным дистрибутивом можно легко использовать другие специализированные библиотеки от Intel®, например Intel® pyDAAL - хорошая альтернатива scikit-learn.

2.1.5. Python(x,y)

Этот дистрибутив больше всего подойдет приверженцам Windows. Абсолютно бесплатен, включает в себя множество научных пакетов и NumPy само-собой разумеется. При этом вы можете создавать научные проекты с Qt-интерфейсом, и работать в Spyder - научно-ориентированной среде разработки. В принципе, это и является ключевой особенностью Python(x,y). Вы действительно можете создавать как маленькие так и большие научные проекты.

Устанавливая Python(x,y), вы получаете очень много инструментов для создания серьезных научных приложений: от компиляторов С/С++/Fortran до средств документирования. Нельзя сказать, что данный дистрибутив является чем-то уникальным, но он определенно заслуживает внимания, особенно, пользователей Windows.

2.1.6. WinPython

Это бесплатный портативный дистрибутив Python - который является просто спасением для пользователей Windows. Слово "портативный" означает, что все необходимое находится в пределах одной папки и может копироваться куда угодно без предварительной установки. При этом на одной машине может запускаться несколько версий Python, причем для разных архитектур. Вы можете хранить весь свой проект на флэшке и работать с ним на любой Windows машине.

Наверное, стоит особо отметить, что данный дистрибутив, все же предназначен для продвинутых научных разработчиков и одновременно продвинутых пользователей Windows. Т. е. это означает, что вы не только создаете, но и сопровождаете научное программное обеспечение и точно знаете что делаете.

2.1.7. Pyzo

Бесплатный кросплатформенный дистрибутив, о котором, весьма лестно отзываются пользователи, особенно OSX. На самом деле, на данный момент, Pyzo представляет собой не дистрибутив, а IDE, которая нацелена на интерактивность и простоту, подходящую не только ученым, но даже школьникам.

Pyzo позволяет выбрать используемый интерпретатор Python и обычно используется с miniconda или anaconda, для упрощения установки научных пакетов. Эту IDE легко установить и легко начать с ней работать. На официальном сайте, достаточно информации для новичков-разработчиков. Поэтому, в отличии от WinPython, Pyzo с увереностью можно порекомендовать тем кто только начинает создавать научное программное обеспечение.

2.1.8. Какой дистрибутив выбрать?

Если вы являетесь новичком в науке или если в вашей работе исследования очень значительно преобладают над разработкой, то я порекомендовал бы дистрибутив Anaconda. Такая рекомендация связана стем, что в образовании и исследованиях IPython, Jupyter и установленных по умолчанию пакетов более чем достаточно. Конечно, рано или поздно, вы столкнетесь с тем, что вам потребуется писать не просто скрипты, но и код, который будет использоваться повторно и очень много раз. Поэтому, здесь обязательно пригодится IDE Spyder и всевозможные инструменты для построения графических инструментов.

Отдельного внимания заслуживает Intel® Distribution for Python, который окажется очень полезен для тех, кто уже перешел в рабочую фазу и ежедневно имеет дело с задачами анлиза данных, машинного обучения или любыми другими, если вы их решаете с помощью стека пакетов SciPy. Даже небольшой прирост в скорости вычислений - это большой плюс. Конечно прирост в 1,3 раза ничего не даст, но если вы готовы приобрести более мощные процессоры, то Intel® Distribution for Python позволит вам использовать весь их потенциал. Причем для этого не требуется знание С и Fortran. Хотя в тоже время знание С и Fortran с инструментами от Intel® может увеличить скорость вычислений на целые порядки.

Ну а все остальное я бы порекомендовал тем кто имеет склонность к разработке научного софта или имеет потребность в ее создании. Причем, новичкам на этом поприще, наверняка стоит начать с Pyzo, думаю, и обучение разработке с данной IDE окажется довольно успешным. Что касается Enthought Canopy, то данный дистрибутив, наверняка больше всего подойдет, как будующим так и состоявшимся инженерам. ActivePython окажется незаменим в коммерческих организациях. А вот Python(x,y) и WinPython больше всего подойдут, как неискушенным так и профессиональным пользователям Windows.

И на последок, данный короткий обзор содержит лишь крайне поверхностный обзор дистрибутивов Python. Я не знаю, какие именно цели вы преследуете и поэтому, прежде чем выбирать, ознакомьтесь с каждым дистрибутивом самостоятельно на его официальном сайте. Если вы преследуете только одну цель - научиться работать с пакетом NumPy (или другими научными пакетами), то повторюсь, лучше всего установить Anaconda. Если изучение NumPy - лишь шаг к более высокой цели, в достижении которой дистрибутив должен послужить основным инструментом, то к выбору дистрибутива нужно подходить более тщательно.

2.1.9. Использование в коммерческих целях

В подавляющем большинстве случаев, пакеты Python относятся к ПО с открытым исходным кодом, но если вы собираетесь использовать какие-то пакеты для извлечения коммерческой выгоды, то обязательно ознакомьтесь с их лицензией. Пользователям ActivePython и платных версий дистрибутивов Anaconda и Enthought Canopy в случае возникновения проблем, связанных с лицензиями на пакеты, предоставляются разнообразные компенсации.

2.2. Установка с помощью pip

Если по некоторым причинам вам необходим только пакет NumPy и больше ничего, то его можно установить с помощью стандартного менеджера пакетов Python - pip. Практически все пакеты разрабатываемые крупными проектами выгружаются в каталог пакетов Python (PyPI) и NumPy - не исключение. менеджер пакетов pip, как раз и нужен для того что бы устанавливать пакеты из этого каталога.

Если в вашей системе установлен Python и pip, то установить NumPy можно с помощью команды:

python -m pip install --user numpy

С помощью этой же команды можно установить любой пакет из стека SciPy:

python -m pip install --user matplotlib

Или сразу весь стек SciPy:

python -m pip install --user numpy scipy matplotlib pandas sympy ipython jupyter nose

В данных примерах используется флаг --user для того что бы пакеты не записывались в системные папки и были доступны только локадьному пользователю. Если для вас это не принципиально, просто не используйте этот флаг.

2.3. Установка через менеджер пакетов Linux

Ubuntu и Debian

Пользователи Linux могут установить NumPy и весь стек пакетов SciPy из репозиториев. Однако, может оказаться, что установленный пакет окажется более старой или вовсе не подходящей версией. К тому же установка окажется общесистемной.

sudo apt-get install python-numpy

Или весь стек целиком

sudo apt-get install python-numpy python-scipy python-pandas python-sympy python-matplotlib ipython ipython-notebook python-nose

Fedora 22 и выше

sudo dnf install numpy scipy python-matplotlib python-pandas sympy ipython python-nose atlas-devel

2.4. Установка через менеджер пакетов MAC

У MAC нет предустановленного менеджера пакетов и если в вашей системе он отсутствует, то рекомендуется установить Macports. Для установки NumPy и всего стека пакетов SciPy выполните следующую команду:

sudo port install py34-numpy py34-scipy py34-matplotlib py34-ipython +notebook py34-pandas py34-sympy py34-nose

В данном примере производится установка для Python версии 3.4. Если вы используете другую версию Python, допустим 3.5 то просто замените py34 на py35.

Если вы используете мнеджер Homebrew, то просто выполните:

brew tap homebrew/science && brew install python numpy

2.5. Windows

Если по некоторым причинам в Windows вам не подходит установка с помощью pip, то ознакомьтесь с проектом Christoph Gohlke, который предоставляет возможность использовать двоичные файлы (32 и 64 бит) созданных для официального дистрибутива Python на языке CPython. Однако, лучшим вариантом все-таки остается pip.

2.6. Сборка NumPy из исходных компонентов

Создавать Пакеты из исходных текстов кода Python относительно легко, но NumPy требует подключения компилятора Fortran и компиляции кода C. Поэтому, если возникла такая необходимость, то лучше обратиться к официальной документации.