Библиотека NumPy
Математические расчеты, особенно эффективно выполнять с помощью библиотеки NumPy. Это набор функций для работы с массивами… с массивами NumPy, которые представляют собой объектную обертку над массивом C/C++. Массивы NumPy - это на самом деле многомерные массивы. Тип их - numpy.ndarray.
Работу с этой библиотекой лучше всего объяснить на примерах:
Создать массив можно из любого итерируемого объекта, например из списка:
import numpy as np
A=[1.0,2.0,3.0,4.0]
B1=np.array(A)
B2=np.array(A, dtype='int')
В первом случае у нас массив B будет хранить числа double, во втором случае - числа int.
Пусть теперь нам нужно создать вектор последовательных значений от 1 до 10 включительно
X=np.arange(1, 11)
Отличительной особенностью массивов NumPy является перегрузка основных операций и векторизация вычислений.
Например, у нас есть два массива длиной 10
A1=np.array([1,2,3,4,5,6,7,8,9,0])
A2=np.arange(10) #A2=[0,1,2,3,4,5,6,7,8,9]
A3=A1+A2 # A3=array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 9])
x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
type(x) # np.ndarray
x.shape # (2,3)
x.dtype # int32
nd.array поддерживает срезы массива аналогично списку.
Поддерживает логическое индексирование
A1=np.array([1,2,3,4,5,6,7,8,9,0])
A1[A1>5] # [6,7,8,9]
Выражение A1>5 даст нам массив [False, False, False, False, False, True, True, True, False]
,
указание такого логического массива в качестве индекса вернет нам те элементы, для которых значение True
.
Эти же значения можно выбрать, если явно указать их индексы
A1=np.array([1,2,3,4,5,6,7,8,9,0])
A1[[5,6,7,8]] # [6,7,8,9]
# или так
A1[(5,6,7,8),] #[6,7,8,9]
Библиотека NumPy содержит огромное количество функций, полное их описание можно найти на сайте NumPy.
Самое важное, что нужно знать - NumPy массивы работают также как и массивы в Matlab, за исключением следующих моментов:
Вот некоторые из них:
- Операции умножения, деления и возведения в степень определены как операции с элементами
- Внутреннее представление и порядок следования элементов в матрице и многомерном массиве - с-подобное, что значит наиболее быстро меняется самый правый индекс.