На главную страницу | Новости  |  Ссылки | Контакты

Spyphy Farnsworth
Квантовая реальность. Кибернетика. Искусственный интеллект


Пакет NumPy языка Python: основные возможности и примеры использования


Рассмотрен пакет NumPy языка Python, который дает реализацию многомерных массивов в языке Python, в частности для работы с матрицами и тензорами

Краткий обзор пакета NumPy


NumPy определяет новый тип данных - N-мерный массив. Массив - это упорядоченный набор данных для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В пакете NumPy массив имеет постоянную длину и может хранить данные одного и того же типа. Количество индексов, которое используется, может быть различным. В NumPy форма массива описывается как кортеж из N натуральных чисел, где длина(N) - размерность массива. В качестве элементов массива можно использовать следующие типы данных:

Пакет NumPy языка 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 реализованы стандартные арифметические операции над элементами массивов:

Пакет NumPy языка Python: основные возможности и примеры использования

Среди других функций для поэлементных операций над массивами существуют:

- тригонометрические: 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 - преобразование матрицы в двумерный массив.

Базовые операции линейной алгебры также существуют в пакете NumPy и реализуются в модуле модуль linalg. Имеется такая функция, как разложение матрицы на множители. Особое внимание уделяется решению систем линейных уравнений. Для вычисления обратной матрицы используется функция inv(). Pinv() - вычисляет псевдо обратные матрицы. Функция solve() решает систему уравнений.

Операции над многочленами


Пакет также поддерживает основные операции над полиномами, они задаются в виде списка коэффициентов, например, [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))





galaxy