Линейная алгебра (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 реализует оператор @.
Матричные и векторные произведения
| Скалярное произведение двух массивов. |
| Вычислить скалярное произведение двух или более массивов в одном вызове функции, автоматически выбирая наилучший порядок вычислений. |
| Возвращает скалярное произведение двух векторов. |
| Векторное скалярное произведение двух массивов. |
| Вычисляет векторное скалярное произведение. |
| Внутреннее произведение двух массивов. |
| Вычислить внешнее произведение двух векторов. |
| Матричное произведение двух массивов. |
| Вычисляет матричное произведение. |
| Вычисление тензорного скалярного произведения по заданным осям. |
| Вычисление тензорного скалярного произведения по заданным осям. |
| Вычисляет сумму по индексам, используя соглашение Эйнштейна. |
| Определяет порядок свёртки с наименьшей стоимостью для выражения einsum, учитывая создание промежуточных массивов. |
| Возвести квадратную матрицу в (целую) степень |
| Произведение Кронекера двух массивов. |
| Возвращает векторное произведение векторов с 3 элементами. |
Разложения
| Разложение Холецкого. |
| Вычислить внешнее произведение двух векторов. |
| Вычислить QR-разложение матрицы. |
| Разложение по сингулярным значениям. |
| Возвращает сингулярные значения матрицы (или набора матриц) |
Матричные собственные значения
| Вычислить собственные значения и собственные векторы квадратного массива. |
| Возвращает собственные значения и собственные векторы комплексной эрмитовой (сопряжённо-симметричной) или вещественной симметричной матрицы. |
Вычислить собственные значения произвольной матрицы. | |
| Вычислить собственные значения комплексной эрмитовой или вещественной симметричной матрицы. |
Нормы и другие числа
| Норма матрицы или вектора. |
| Вычисляет норму матрицы (или набора матриц) |
| Вычисляет норму вектора (или набора векторов) |
| Вычислить число обусловленности матрицы. |
| Вычислить определитель массива. |
| Возвращает ранг матрицы массива, используя метод SVD |
Вычислить знак и (натуральный) логарифм определителя массива. | |
| Возвращает сумму по диагоналям массива. |
| Возвращает сумму по заданным диагоналям матрицы (или набора матриц) |
Решение уравнений и обращение матриц
| Решить линейное матричное уравнение или систему линейных скалярных уравнений. |
| Решить тензорное уравнение |
| Возвращает решение в методе наименьших квадратов для линейного матричного уравнения. |
| Вычислить обратную матрицу. |
| Вычислить псевдообратную (по Муру-Пенрозу) матрицу. |
| Вычислить «обратную» N-мерного массива. |
Другие операции с матрицами
| Возвращает указанные диагонали. |
| Возвращает указанные диагонали матрицы (или набора матриц) |
| Транспонирует матрицу (или набор матриц) |
Исключения
Объект исключения 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