Простой Python — страница 53 из 66

Библиотека SciPy (http://www.scipy.org/) создана на основе NumPy и имеет даже больше функций. Релиз SciPy (http://www.scipy.org/scipylib/download.html) содержит NumPy, SciPy, Pandas (ее мы рассмотрим позже в этой главе) и другие библиотеки.

SciPy содержит множество модулей, включая те, которые выполняют следующие задачи:

• оптимизацию;

• ведение статистики;

• интерполяцию;

• линейную регрессию;

• интеграцию;

• обработку изображений;

• обработку сигналов.

Если вы уже работали с другими научными инструментами для компьютера, то обнаружите, что Python, NumPy и SciPy охватывают некоторые области, с которыми работает также коммерческий MatLab (http://www.mathworks.com/products/matlab/) или приложение с открытым исходным кодом R (http://www.r-project.org/).

Библиотека SciKit

Как и предыдущая библиотека, SciKit — это группа научных пакетов, построенная на основе SciPy. SciKit (https://scikits.appspot.com/scikits) специализируется на машинном обучении. Она поддерживает моделирование, классификацию, кластеризацию и разнообразные алгоритмы.

Библиотека IPython

Библиотека IPython (http://ipython.org/) стоит вашего времени по многим причинам. Вот некоторые из них.

• Наличие улучшенного интерактивного интерпретатора (альтернатива примерам с приглашением >>>, которые мы использовали на протяжении этой книги).

• Публикация кодов, диаграмм, текста и других медиа в веб-блокнотах.

• Поддержка параллельных вычислений (http://bit.ly/parallel-comp).

Рассмотрим интерпретатор и блокноты.

Лучший интерпретатор

Существуют разные версии IPython для Python 2 и Python 3, обе они устанавливаются Anaconda или другой современной научной сборкой Python. Используйте iPython 3 для версии Python 3:

$ ipython3

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 16 2013, 23:39:35)

Type "copyright", "credits" or "license" for more information.

IPython 0.13.1 — An enhanced Interactive Python.

?·········-> Introduction and overview of IPython's features.

%quickref — > Quick reference.

help······-> Python's own help system.

object?···-> Details about 'object', use 'object??' for extra details.

In [1]:

Стандартный интерпретатор Python использует приглашения >>> и…, чтобы указать, где и когда вы должны вводить код. IPython отслеживает все, что вы вводите, в списке In, и все, что вы выводите, в списке Out. Каждый фрагмент входных данных может занимать больше одной строки, поэтому вам следует отправлять его, нажав клавишу Shift, пока держите нажатой клавишу Enter. Вот пример одной строки:

In [1]: print("Hello? World?")

Hello? World?

In [2]:

In и Out — это автоматически нумеруемые списки, которые позволяют вам получить доступ к любой введенной или выведенной информации.

Если вы введете символ? после переменной, IPython укажет ее тип, значение, способы создания переменной этого типа и сообщит некоторую вспомогательную информацию:

In [4]: answer = 42

In [5]: answer?

Type:·······int

String Form:42

Docstring:

int(x=0) — > integer

int(x, base=10) — > integer

Convert a number or string to an integer, or return 0 if no arguments

are given.··If x is a number, return x.__int__().··For floating point

numbers, this truncates towards zero.

If x is not a number or if base is given, then x must be a string,

bytes, or bytearray instance representing an integer literal in the

given base.··The literal can be preceded by '+' or '-' and be surrounded

by whitespace.··The base defaults to 10.··Valid bases are 0 and 2-36.

Base 0 means to interpret the base from the string as an integer literal.

>>> int('0b100', base=0)

4

Поиск по имени — это популярная особенность IDE вроде IPython. Если вы нажмете клавишу Tab после того, как введете несколько символов, IPython покажет все переменные, ключевые слова и функции, которые начинаются с этих символов. Определим несколько переменных, а затем найдем все, что начинается с буквы «f»:

In [6]: fee = 1

In [7]: fie = 2

In [8]: fo = 3

In [9]: fum = 4

In [10]: ftab

%%file····fie·······finally···fo········format····frozenset

fee·······filter····float·····for·······from······fum

Если вы введете fe и нажмете клавишу Tab, то увидите на экране переменную fee — единственную в этой программе, начинающуюся с буквосочетания fe:

In [11]: fee

Out[11]: 1

Блокноты IPython

Если вы предпочитаете графические интерфейсы, вам может понравиться веб-интерфейс IPython. Вы начинаете из окна запуска Anaconda (рис. В.1).


Рис. В.1. Домашняя страница Anaconda


Для того чтобы запустить блокнот в браузере, щелкните на значке Launch (Запустить), расположенный справа от строки ipython-notebook. На рис. В.2 показан начальный экран.


Рис. В.2. Домашняя страница IPython


Теперь нажмем кнопку New Notebook (Новый блокнот). Появится окно, похожее на то, что показано на рис. В.3.


Рис. В.3. Страница блокнота IPython


Для графической версии нашего предыдущего примера, основанного на тексте, введите ту же команду, которую мы использовали в предыдущем разделе, как показано на рис. В.4.


Рис. В.4. Вводим код в IPython


Нажмите на черный треугольный значок, чтобы запустить код. Результат показан на рис. В.5.

Такой блокнот — это не только графическая версия улучшенного интерпретатора. Помимо кода, он может содержать текст и форматированные математические выражения.


Рис. В.5. Запускаем код в IPython


В ряду значков в верхней части блокнота есть раскрывающееся меню (рис. В.6), с помощью которого вы можете указать, как хотите вводить содержимое. Можно выбрать один из следующих вариантов:

• код — стандартный вариант для кода Python;

• разметка — альтернатива HTML, которая служит для отображения отформатированного читабельного текста;

• простой текст — неформатированный текст от Heading 1 (Заголовок 1) до Heading 6 (Заголовок 6) — теги HTML от

до

.


Рис. В.6. Меню выбора содержимого


Смешаем текст с кодом, сделав некое подобие «Википедии». Выберите пункт Heading 1 из раскрывающегося меню, введите Humble Brag Example, а затем нажмите клавишу Shift и, удерживая ее, клавишу Enter. Вы должны увидеть эти три слова, выделенные крупным полужирным шрифтом. Далее в раскрывающемся меню выберите пункт Code и введите такой код:

print("Some people say this code is ingenious")

Затем снова нажмите Shift+Enter. Вы должны увидеть отформатированный заголовок и код, как показано на рис. В.7.

Объединяя код, выходную информацию, текст и даже изображения, вы можете создать интерактивный блокнот. Поскольку доступ к нему можно получить по сети, он будет доступен из любого браузера.


Рис. В.7. Форматированный текст и код


Вы можете увидеть блокноты, преобразованные в статический HTML (http://nbviewer.ipython.org/) или в галерею (http://bit.ly/ipy-notebooks). Например, взгляните на блокнот о пассажирах «Титаника» (http://bit.ly/titanic-noteb). Он содержит таблицы, в которых показывается, как пол, благосостояние и местонахождение на корабле повлияли на выживание. В качестве бонуса можете прочитать, как использовать различные технологии машинного обучения.

Ученые начинают применять блокноты IPython для того, чтобы публиковать свои исследования, включая весь код и данные, использованные в них.

Pandas