На главную страницу | Новости | Ссылки | Контакты
Рассмотрим в первую очередь библиотеки NumPy, которая обычно используется для работы с матрицами.
До сих пор рассматривались только функции и классы, входящие непосредственно в ядро языка Python. Их использование не требует подключения каких-либо внешних библиотек. Однако для получения большей функциональности возникает необходимость подключения (импортирования) внешних модулей. Для этого служит ключевое слово
Например, модуль
#code: Использование модуля math
>>> import math
>>> math.pi # число пи
3.141592653589793
>>> math.cos(math.pi) # вычисляем косинус числа пи
-1.0
При импорте модуля можно задать для него псевдоним (исключительно для удобства) с помощью ключевого слова
#code: Использование модуля math
>>> import math as m
>>> m.cos(m.pi)
-1.0
Часто полезно импортировать не весь модуль, а лишь отдельные его атрибуты (имена функций, классов и т.п.). Для этого служит инструкция
>>> from math import cos, pi
>>> pi
3.141592653589793
>>> cos(pi)
-1.0
Существуют специальная форма инструкции from, которая позволяет импортировать сразу все атрибуты модуля:
>>> from math import *
Однако такой подход не всегда оправдан, так как часто приводит к <<замусориванию>> пространства имен.
%Инструкции импорта не обязательно должны находится в начала всей программы, они могут идти непосредственно перед первым использованием требуемых функций.
Фактически модули в Python представляют собой просто файлы с исходным кодом либо байт-кодом (причем не обязательно написанных на языке Python). Несколько модулей могут быть помещены в отдельный каталог. Такой каталог называет пакетом. При этом полный путь к функции будет выглядеть примерно так:
Замечание. Для сравнения, в C++ для доступа к методу класса используется оператор точка, а для доступа к функциям библиотек --- оператор двойного двоеточия (
Библиотека NumPy расширяет возможности языка Python и предназначена для работы с матрицами (класс
Начнем с рассмотрения матриц. Следующий пример демонстрирует создание матрицы размера 2 на 2 и ее вывода на консоль.
>>> import numpy as np
>>> A = np.matrix([[1,2],[3,4]])
>>> print(A)
[[1 2]
[3 4]]
С точки зрения ООП написанное здесь можно понимать следующим образом. Во второй строчке происходит создание экземпляра класса matrix (из пакета numpy), причем в конструктор класса передаем стандартный ``питоновский'' список, из которого и формируется ``матрица''
После того, как матрица создана, над ней можно производить различные операции. Например, можно вычеслить квадрат этой матрицы:
>>> B = A**2
>>> print(B)
[[ 7 10]
[15 22]]
Заметим, что для новой матрицы
Аналогичным образом можно перемножать, складывать и вычитать матрицы, а также умножать матрицы на числа и т.п. (все эти операции уже перегружены в классе matrix).
Для более сложных вычислений над матрицами, например нахождения обратной матрицы, необходимо импортировать модуль
>>> from numpy.linalg import inv
>>> print(inv(A)) # вычисление обратной матрицы
[[-2. 1. ]
[ 1.5 -0.5]]
%Полным именем этой функции было бы
Как уже было сказано, NumPy реализует поддержку больших многомерных массивов. Класс многомерных массивов называется
Пример:
Атрибуты объектов ndarray:
- ndarray.ndim --- число осей (измерений) массива;
- ndarray.shape --- размеры массива, его форма;
- ndarray.size --- число всех элементов массива;
- ndarray.dtype --- объект, описывающий тип элементов массива;
- ndarray.itemsize --- размер каждого элемента массива в байтах.
- ndarray.data --- буфер, содержащий фактические элементы массива;
По умолчанию тип создаваемого массива ---
#code: Создание массивов
import numpy as np
a = np.array([1, 2, 3])
b = np.array([[1.5, 2, 3], [4, 5, 6]])
c = np.array([[1.5, 2, 3], [4, 5, 6]], dtype=np.complex)
Стандартные массивы:
- np.zeros((nx, ny)) --- создает массив из нулей,
- np.ones((nx, ny, nz)) --- массив из единиц.
- eye(n) --- единичная матрица (двумерный массив);
- empty() --- массив без заполнения;
#code: Последовательности
np.arange(10, 30, 5)
array([10, 15, 20, 25])
Рассматриваемые ниже библиотеки для работы с графами используют внутри себя функции из Мatplotlib для формирования изображений графов. Явно нам понадобится вызывать только функцию