На главную страницу | Новости | Ссылки | Контакты
Рассмотрен пакет NumPy языка Python, который дает реализацию многомерных массивов в языке Python, в частности для работы с матрицами и тензорами
При вычислениях часто используются специальные матрицы. В единичных матрицах элементы главной диагонали - 1, а все остальные - 0. Нулевые матрицы имеют элементы, которые все равны 0. Для инициализации таких массивов в NumPy имеются соответствующие инструменты:
zeros(sh, dt) - формирует массив с нулевыми элементами, sh - форма, dt - тип элемента(необязательный аргумент).
ones(sh, dt) - формирует массив с единичными элементами.
eye(n, m) - формирует единичную матрицу, n,m - размерность.
eye(n), identity(n) - формируют квадратную единичную матрицу, n - размерность.
Пример:
import numpy as np
a0 = np.zeros((2,4), "int")
print("a0")
print(a0)
a1 = np.ones((4, 5), "float")
print("a1")
print(a1)
a2 = np.identity(2)
print("a2")
print(a2)
Также можно создать одномерные массивы. Они формируются с помощью следующих функций:
arange(start, stop, step) - формирует массив величины, начиная со start до(не включая) stop с шагом step.
linspace(start, stop, n) - создает массив с числом элементов n, значения которого равномерно распределены от start до(включая) stop.
Пример создания одномерных массивов:
import numpy as np
a0 = np.arange(5, 2.5, -0.5)
print("a0")
print(a0)
a1 = np.linspace(1, 5, 5)
print("a1")
print(a1)
В NumPy реализованы стандартные арифметические операции над элементами массивов:
Среди других функций для поэлементных операций над массивами существуют:
- тригонометрические: sin(x), cos(x), arctan(), radians(x) и др.
- гиперболические: sinh(x), cosh(x), tanh(x), arcsinh(x), arccosh(x), arctanh(x).
- экспоненциальные и логарифмические: exp(x), log(x) log10(x) и др.
В вычислительной практике вместо массивов часто удобнее использовать вектора и матрицы. Например, при программировании вместо поэлементных операций с массивами можно использовать матричные операции. Работа с матричными типами является вычислительной основой системы научных вычислений MATLAB. Пакет NumPy содержит подклассы векторных, матричных и тензорных объектов.
При работе с массивами удобно использовать атрибут .T для получения транспонированной матрицы. Для матричных объектов используются также следующие атрибуты:
.H - транспонированная с комплексным сопряжением;
.I - обратная матрица;
.A - преобразование матрицы в двумерный массив.
Базовые операции
Пакет также поддерживает основные операции над полиномами, они задаются в виде списка коэффициентов, например, [5, -2, 6] соответствует полином
Для того, чтобы задать полином следует использовать функцию poly1d(), если требуется значение полинома p в точке x, то существует функция polyval(p, x).
Пример нахождения значения полинома в точке:
import numpy as np
p = np.poly1d([1, -4, -21])
print(np.poly1d(p))
a = np.polyval(p, 1)
print(a)
К арифметическим операциям над полиномами относятся функции: polyadd() - сложение, polymul() - умножение, polydiv() - деление.
Пример сложения полиномов:
import numpy as np
p = np.poly1d([1, -4, -21])
print("p")
print(np.poly1d(p))
q = np.poly1d([5, 4, 6, 9])
print("q")
print(np.poly1d(q))
print("p+q")
print(np.polyadd(p, q))
Чтобы вычислить корни полинома следует использовать функцию roots(p), краткая форма – p.r. Также есть операции дифференцирования (polyder()) и интегрирования (polyint()).
import numpy as np
p = np.poly1d([1, -4, -21])
print("p")
print(np.poly1d(p))
print("roots")
print(np.roots(p))
print("differentiation")
print(np.polyder(p))