Step 2 (S-15482)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/7627/step/2


Начнем с библиотеки NumPy. Первым делом подключим эту библиотеку и все функции из нее.

S-15482-1.png

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

S-15482-2.png

Массивы в NumPy похожи на списки. Отличие заключается в том, что элементы array должны быть одного типа. Например, мы не можем поместить в array числа и строки одновременно. Более того, в массивах Numpy мы не можем хранить целые и вещественные числа вместе. Все элементы массива должны быть одного типа.

Мы можем вывести массив на печать с помощью функции print. Или в интерактивном режиме просто введя имя массива. Видим что вывод отличается.

S-15482-3.png

Print выводит элементы массива в квадратных скобках через пробел, а обращение по имени указывает нам, что в переменной а хранится array. Для произвольного массива можно посмотреть его размерность, обратившись к атрибуту ndim.

S-15482-4.png

Если нужно узнать размеры массива (количество строк, столбцов и т.д.) можно использовать атрибут shape.

S-15482-5.png

Для примера создадим двумерный массив.

S-15482-6.png

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

S-15482-7.png

Мы можем использовать атрибут массива size, он выведет общее количество элементов массива.

S-15482-8.png

Для создания массива инициализированного нулями в библиотеке NumPy есть специальная функция - zeros. В качестве параметра мы передаем размеры нашего массива в круглых скобках.

S-15482-9.png

Ранее мы довольно часто использовали функцию range. В NumPy есть аналогичная функция - arange', позволяющая генерировать массив. Но в отличии от range, она возвращает массив.

S-15482-10.png

Иногда удобно применять функцию linspace вместо range. Она принимает три аргумента (начало интервала, конец интервала, n - количество элементов). Она генерирует массив, состоящий из n равноудаленных чисел, включая начало и конец интервала.

S-15482-11.png

Метод массива reshape позволяет преобразовывать одномерные списки во многомерные.

S-15482-12.png

В данном примере мы из одномерного массива, создали двумерный массив размером 4 на 3.

Теперь разберем операции над массивами. Создадим массивы а и b. Посмотрим на результаты сложения и вычитания массивов.

S-15482-13.png

Видим, что операции сложения и вычитания работают поэлементно. Результирующий массив формируется из результатов проведения операции над элементами с одинаковыми индексами. Операция возведения в степень примененная к массиву, вернет нам массив, в котором все элементы будут возведены в соответствующую степень.

S-15482-14.png

Массивы можно передавать в качестве аргументов в функции. В этом случае функция будет применена к каждому элементу массива. В примере ниже мы передаем массив а в функцию sin, а затем умножаем результат на 2.

S-15482-15.png

Возможно применение операций сравнений для массива. Например:

S-15482-16.png

Каждый элементы массива сравнивается с числом 20 и результирующий массив будет состоять из булевых значений.