Spec-Zone.ru › NumPy 1.20

Линейная алгебра (numpy.linalg)

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

Произведения матриц и векторов

dot(a, b[, out])

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

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

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

vdot(a, b)

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

inner(a, b)

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

outer(a, b[, out])

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

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

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

tensordot(a, b[, axes])

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

einsum(subscripts, *operands[, out, dtype, …])

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

einsum_path(subscripts, *operands[, optimize])

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

linalg.matrix_power(a, n)

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

kron(a, b)

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

Разложения

linalg.cholesky(a)

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

linalg.qr(a[, mode])

Вычисляет QR-факторизацию матрицы.

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

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

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

linalg.eig(a)

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

linalg.eigh(a[, UPLO])

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

linalg.eigvals(a)

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

linalg.eigvalsh(a[, UPLO])

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

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

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

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

linalg.cond(x[, p])

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

linalg.det(a)

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

linalg.matrix_rank(M[, tol, hermitian])

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

linalg.slogdet(a)

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

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

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

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

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])

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

linalg.tensorinv(a[, ind])

Вычисляет «обращение» N-мерного массива.

Исключения

linalg.LinAlgError

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

Линейная алгебра для нескольких матриц сразу

Новое в версии 1.8.0.

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

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

© 2005–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/routines.linalg.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API