Математические расчеты, особенно эффективно выполнять с помощью библиотеки 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, за исключением следующих моментов:

Вот некоторые из них:

  1. Операции умножения, деления и возведения в степень определены как операции с элементами
  2. Внутреннее представление и порядок следования элементов в матрице и многомерном массиве - с-подобное, что значит наиболее быстро меняется самый правый индекс.