Найти в Дзене
Программист о Data Science

День 4: Основа основ. Знакомимся с NumPy

Оглавление

Numpy лежит в основе многих библиотек, с которыми нам предстоит работать. Например, Pandas построен на базе библиотеки numpy, которая реализует ряд математических функций, алгебраических структур данных, таких как векторы и матрицы и операции над ними. Конечно numpy используется и напрямую без Pandas. Посмотрим на основные её возможности.

Но сначала пакеты NumPy нужно доустановить.
Но сначала пакеты NumPy нужно доустановить.
Импортируем NumPy в ноутбук.
Импортируем NumPy в ноутбук.

Базовые возвожности библиотеки

Numpy массивы, они же векторы и матрицы.

обычном Python список тоже так может
обычном Python список тоже так может
а так обычный список уже не может
а так обычный список уже не может
выборка по условию
выборка по условию
умножить все элементы массива на 3
умножить все элементы массива на 3
но это другая операция - повторение массива 3 раза
но это другая операция - повторение массива 3 раза
возведение в степень всех элементов массива
возведение в степень всех элементов массива
-10

Также в NumPy реализованы разные функции

эти функции могут генерировать целые массивы, матрицы случайных чисел или более сложные структуры
эти функции могут генерировать целые массивы, матрицы случайных чисел или более сложные структуры
вектор из случайных величин
вектор из случайных величин
матрица 10x5 из случайных величин
матрица 10x5 из случайных величин

К слову тип распределения - нормальное или равномерное - определяет вероятности выпадения того или иного случайного значения. Например, равномерное распределение вероятностей говорит о том, что в диапазоне в рамках, которого мы генерируем числа (от нуля до единицы в нашем случае) мы будем получать все числа диапазона с одинаковой вероятностью. Нормальное распределение - немного сложнее. Его еще называют распределением Гаусса. Вероятность появления определенного числа определяется функцией Гаусса.

ipython notebook поддерживает ряд вспомогательных инструкций, которые называются magic операторами, например %md для того, чтобы отформатировать ячейку ноутбука используя markdown разметку.

Сегодня мы воспользуемся другим magic оператором - %timeit - встроенным замерщиком времени выполнения функции. При этом он как положено выполняет код несколько раз и выводит простейшую статистику.

Например, в numpy реализованы свои генераторы списков. В отличие от встроенного в стандартную библиотеку Python xrange, np.arange позволяет задать шаг с плавающей запятой. Давайте сравним время работы этих функций:

Видно, что NumPy генератор более производительный
Видно, что NumPy генератор более производительный