Линейная алгебра#

Функции линейной алгебры NumPy полагаются на BLAS и LAPACK для предоставления эффективных низкоуровневых реализаций стандартных алгоритмов линейной алгебры. Эти библиотеки могут быть предоставлены самим NumPy с использованием C-версий подмножества их эталонных реализаций, но, когда возможно, предпочтительны высокооптимизированные библиотеки, использующие специализированные функции процессора. Примеры таких библиотек: OpenBLAS, MKL (TM) и ATLAS. Поскольку эти библиотеки многопоточные и зависят от процессора, переменные окружения и внешние пакеты, такие как threadpoolctl может потребоваться для управления количеством потоков или указания архитектуры процессора.

Библиотека SciPy также содержит linalg подмодуль, и есть пересечение в функциональности, предоставляемой подмодулями SciPy и NumPy. SciPy содержит функции, которых нет в numpy.linalg, такие как функции, связанные с LU-разложением и разложением Шура, несколько способов вычисления псевдообратной матрицы и матричные трансцендентные функции, такие как матричный логарифм. Некоторые функции, существующие в обоих, имеют расширенную функциональность в scipy.linalg. Например, scipy.linalg.eig может принимать второй аргумент матрицы для решения обобщенных задач на собственные значения. Однако некоторые функции в NumPy имеют более гибкие опции вещания. Например, numpy.linalg.solve может обрабатывать «уложенные» массивы, в то время как scipy.linalg.solve принимает только один квадратный массив в качестве первого аргумента.

Примечание

Термин матрица как оно используется на этой странице, указывает на 2d numpy.array объект, и не a numpy.matrix объект. Последний больше не рекомендуется, даже для линейной алгебры. См. документация по объекту матрицы для получения дополнительной информации.

The @ operator#

Введено в NumPy 1.10.0, @ оператор предпочтительнее других методов при вычислении матричного произведения между 2-мерными массивами. numpy.matmul функция реализует @ оператор.

Матричные и векторные произведения#

dot(a, b[, out])

Скалярное произведение двух массивов.

linalg.multi_dot(arrays, *[, out])

Вычислите скалярное произведение двух или более массивов в одном вызове функции, автоматически выбирая самый быстрый порядок вычисления.

vdot(a, b, /)

Вернуть скалярное произведение двух векторов.

vecdot(x1, x2, /[, out, casting, order, ...])

Векторное скалярное произведение двух массивов.

linalg.vecdot(x1, x2, /, *[, axis])

Вычисляет скалярное произведение векторов.

inner(a, b, /)

Скалярное произведение двух массивов.

outer(a, b[, out])

Вычисление внешнего произведения двух векторов.

linalg.outer(x1, x2, /)

Вычисление внешнего произведения двух векторов.

matmul(x1, x2, /[, out, casting, order, ...])

Матричное произведение двух массивов.

linalg.matmul(x1, x2, /)

Вычисляет матричное произведение.

matvec(x1, x2, /[, out, casting, order, ...])

Матрично-векторное скалярное произведение двух массивов.

vecmat(x1, x2, /[, out, casting, order, ...])

Векторно-матричное скалярное произведение двух массивов.

tensordot(a, b[, axes])

Вычисляет тензорное скалярное произведение вдоль указанных осей.

linalg.tensordot(x1, x2, /, *[, axes])

Вычисляет тензорное скалярное произведение вдоль указанных осей.

einsum(индексы, *операнды[, out, dtype, ...])

Вычисляет соглашение суммирования Эйнштейна для операндов.

einsum_path(subscripts, *operands[, optimize])

Вычисляет порядок свертки с наименьшей стоимостью для выражения einsum, учитывая создание промежуточных массивов.

linalg.matrix_power(a, n)

Возведение квадратной матрицы в (целую) степень n.

kron(a, b)

Произведение Кронекера двух массивов.

linalg.cross(x1, x2, /, *[, axis])

Возвращает векторное произведение 3-элементных векторов.

Разложения#

linalg.cholesky(a, /, *[, upper])

Разложение Холецкого.

linalg.qr(a[, mode])

Вычислите QR-разложение матрицы.

linalg.svd(a[, full_matrices, compute_uv, ...])

Сингулярное разложение.

linalg.svdvals(x, /)

Возвращает сингулярные значения матрицы (или набора матриц) x.

Собственные значения матрицы#

linalg.eig(a)

Вычислить собственные значения и правые собственные векторы квадратного массива.

linalg.eigh(a[, UPLO])

Возвращает собственные значения и собственные векторы комплексной эрмитовой (сопряжённо-симметричной) или вещественной симметричной матрицы.

linalg.eigvals(a)

Вычислить собственные значения общей матрицы.

linalg.eigvalsh(a[, UPLO])

Вычислить собственные значения комплексной эрмитовой или вещественной симметричной матрицы.

Нормы и другие числа#

linalg.norm(x[, ord, axis, keepdims])

Норма матрицы или вектора.

linalg.matrix_norm(x, /, *[, keepdims, ord])

Вычисляет матричную норму матрицы (или стека матриц) x.

linalg.vector_norm(x, /, *[, axis, ...])

Вычисляет векторную норму вектора (или пакета векторов) x.

linalg.cond(x[, p])

Вычислить число обусловленности матрицы.

linalg.det(a)

Вычислить определитель массива.

linalg.matrix_rank(A[, tol, hermitian, rtol])

Возвращает ранг матрицы массива с использованием метода SVD

linalg.slogdet(a)

Вычислите знак и (натуральный) логарифм определителя массива.

trace(a[, offset, axis1, axis2, dtype, out])

Возвращает сумму по диагоналям массива.

linalg.trace(x, /, *[, offset, dtype])

Возвращает сумму по указанным диагоналям матрицы (или стека матриц) x.

Решение уравнений и обращение матриц#

linalg.solve(a, b)

Решить линейное матричное уравнение или систему линейных скалярных уравнений.

linalg.tensorsolve(a, b[, axes])

Решить тензорное уравнение a x = b для x.

linalg.lstsq(a, b[, rcond])

Вернуть решение методом наименьших квадратов для линейного матричного уравнения.

linalg.inv(a)

Вычислить обратную матрицу.

linalg.pinv(a[, rcond, hermitian, rtol])

Вычислить (Мура-Пенроуза) псевдообратную матрицу.

linalg.tensorinv(a[, ind])

Вычислить 'обратный' N-мерного массива.

Другие операции с матрицами#

diagonal(a[, offset, axis1, axis2])

Возвращает указанные диагонали.

linalg.diagonal(x, /, *[, offset])

Возвращает указанные диагонали матрицы (или стека матриц) x.

linalg.matrix_transpose(x, /)

Транспонирует матрицу (или стек матриц) x.

Исключения#

linalg.LinAlgError

Объект, производный от общего исключения Python, вызываемый функциями linalg.

Линейная алгебра над несколькими матрицами одновременно#

Некоторые из перечисленных выше подпрограмм линейной алгебры могут вычислять результаты для нескольких матриц одновременно, если они объединены в один массив.

Это указано в документации через спецификации входных параметров, такие как a : (..., M, M) array_like. Это означает, что если, например, дан входной массив a.shape == (N, M, M), он интерпретируется как «стопка» из N матриц, каждая размером M на M. Аналогичная спецификация применяется к возвращаемым значениям, например, определитель имеет det : (...) и в этом случае вернет массив формы det(a).shape == (N,). Это обобщается на операции линейной алгебры с многомерными массивами: последние 1 или 2 измерения многомерного массива интерпретируются как векторы или матрицы, в зависимости от операции.