Я рекомендую вам установить пакет Anaconda. Он большой, и все, что пред-
ставлено в этом приложении, в нем содержится. В приложении Г рассматривается
использование Python 3 и Anaconda. Примеры остальной части приложения под-
разумевают, что вы установили необходимые пакеты либо отдельно, либо как часть
Anaconda.
414
Приложение В. Py в науке
NumPy
Это одна из основных причин популярности Python среди ученых (http://www.num-
py.org/). Вы слышали, что динамические языки вроде Python зачастую медленнее
компилирующих языков вроде С или даже других интерпретируемых языков вро-
де Java. NumPy был написан для предоставления доступа к быстрым многомерным
массивам по аналогии с научными языками вроде FORTRAN. Вы получаете ско-
рость С и дружественность к разработчикам Python.
Если вы загрузили один из научных дистрибутивов, у вас уже есть NumPy.
Если же нет, следуйте инструкциям на странице загрузки NumPy (http://www.scipy.org/
scipylib/download.html).
Для того чтобы начать работу с NumPy, вы должны понять устройство основной
структуры данных, многомерного массива ndarray (от N-dimensional array —
«N-мерный массив») или просто array. В отличие от списков и кортежей в Python,
все элементы должны иметь одинаковый тип.
NumPy называет количество измерений массива его рангом. Одномерный мас-
сив похож на ряд значений, двухмерный — на таблицу с рядами и колонками,
а трехмерный — на кубик Рубика. Длина измерений может не быть одинаковой.
array в NumPy и array в Python — это не одно и то же. В дальнейшем в этом приложении
я буду работать только с массивами NumPy.
Но зачем нам нужны массивы?
Научные данные зачастую представляют собой большие последовательности.
Научные подсчеты для таких данных часто выполняются с использованием
матричной математики, регрессии, симуляции и других приемов, которые об-
рабатывают множество фрагментов данных одновременно.
NumPy обрабатывает массивы гораздо быстрее, чем стандартные списки или
кортежи Python.
Существует множество способов создать массив NumPy.
Создание массива с помощью функции array()
Вы можете создать массив из обычного списка или кортежа:
>>> b = np.array([2, 4, 6, 8])
>>> b
array([2, 4, 6, 8])
Атрибут ndim возвращает ранг массива:
>>> b.ndim
1
NumPy
415
Общее число значений можно получить с помощью атрибута size:
>>> b.size
4
Количество значений каждого ранга возвращает атрибут shape:
>>> b.shape