Spec-Zone.ru › NumPy 2.0

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

Примечание

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

Оператор @

Введённый в NumPy 1.10.0, оператор @ предпочтительнее других методов при вычислении матричного произведения между массивами 2d. Функция 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])

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

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

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

linalg.matmul(x1, x2, /)

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

tensordot(a, b[, axes])

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

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

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

einsum(subscripts, *operands[, 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.outer(x1, x2, /)

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

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 функций.

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

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

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

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

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

Spec-Zone.ru

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