Учебная страница курса биоинформатики,
год поступления 2010
numpy
- Это такой пакет для линейной алгебры
import numpy as np – после этого мы будем работать с содержимым пакета как np.что-то
1 >>> import numpy as np
Основной тип данных, который определяется в этом пакете – np.array – это единый тип для векторов, матриц, тензоров и т.п.:
- Все элементы массива должны быть одного типа. Мы можем выбирать тип данных в массиве, когда создаём его:
1 >>> a = np.array([1,2,3], dtype='float32')
- Возможные типы: int8, int16, int32, int64, uint8, uint16, uint32, uint64, float32, float64, complex64, complex128, complex256, bool, char, ...
Число после типа – число бит, отводимое на значение этого типа
int – целое число, uint – неотрицательное, float – с плавающей точкой, complex – комплексное, bool – True или False, char – буква
- Чтобы проще генерировать разные матрицы в numpy есть несколько полезных функций:
np.arange(10) – аналог range()
np.ones((10, 10)) – матрица из единиц 10x10
np.zeros((10, 10)) – матрица из нулей 10x10
np.identity((10, 10)) – единичная матрица 10x10
np.reshape() – меняет форму матрицы, оставляя в ней те же элементы (в каком-то порядке)
np.shape() – возвращает список размеров матрицы по каждой оси (для вектора – число элементов, для матрицы – число строк, число столбцов, для 3D-матрицы – число слоёв, число строк, число столбцов и т.п.)
- Операции с матрицами:
a + b, a * b, a / b, ... – поэлементные арифметические операции
np.dot(a, b) – тензорное (для матриц – матричное, для векторов – скалярное) произведение
a > n – матрица типа bool того же размера, что и a, в которой хранятся значения True только для тех элементов матрицы a, которые больше значения n. (Аналогично для всех операций сравнения)
- Задача: посчитать число элементов матрицы, значение которых превышает данный порог
- Нам потребуются ещё методы матриц:
a.sum() – сумма элементов матрицы
a.sum(axis=1) – сумма элементов матрицы по второй оси (в терминах того, как размер выдаёт shape)
a.cumsum() – возвращает матрицу, в которой в каждом следующем элементе сумма предыдущих элементов (в каком-то порядке обхода матрицы)
np.random – модуль разнообразных генераторов случайных массивов
- Решение:
np.sin(a) – применяет функцию sin ко всем элементам и возвращает массив получившихся значений (аналогично для кучи функций)
matplotlib – пакет для рисования графиков
- Это построит график из точек с координатами x и y из соответствующих пар из xs, ys
- Строит график из последовательно возрастающих по x точек, для y которых заданы очередные значения из списка
plt.plot(xs, ..., "o") – рисует кружочками
"b--" – синим пунктиром
"r" – красная линия
- Полезные вещи из numpy:
- np.arange(1, 100, 2) делает массив из значений от 1 до 100 исключительно с шагом 2
- np.linspace(0, 5, 10) делает массив из 10 точек, равномерно распределённых в диапазоне от 0 до 5
np.pi – число пи
- Задание: нарисовать график sin(x) на -pi, pi
- Решение: