numpy.linalg — Процедуры линейной алгебры

Подмодуль numpy.linalg предоставляет небольшой набор процедур линейной алгебры, работающих с объектами numpy.ndarray. Функции, работающие с матрицами, требуют двумерных массивов; передача массивов иной размерности возбуждает исключение ValueError. Комплексные типы данных этим подмодулем не поддерживаются.

Функции

numpy.linalg.cholesky(A: ndarray) ndarray

Вычисляет разложение Холецкого положительно определённой симметричной квадратной матрицы.

Параметры:

A – положительно определённая симметричная двумерная квадратная матрица.

Результат:

нижнетреугольный массив numpy.ndarray L такой, что A = L @ L.T.

Исключение:

ValueError – если A не квадратная, не симметричная или не положительно определённая.

numpy.linalg.det(m: ndarray) float

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

Параметры:

m – двумерная квадратная матрица.

Результат:

определитель m как Python-значение float. Возвращаемое значение всегда является числом с плавающей точкой, даже когда на входе целочисленный массив.

Исключение:

ValueError – если m не квадратная.

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

numpy.linalg.eig(m: ndarray) tuple[ndarray, ndarray]

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

Параметры:

m – двумерная вещественная симметричная квадратная матрица.

Результат:

двухэлементный кортеж (eigenvalues, eigenvectors). eigenvalues — это одномерный массив длины N; eigenvectors — это массив размером N-на-N, столбцы которого являются соответствующими собственными векторами.

Исключение:

ValueError – если m не квадратная, не симметричная или если итерация вращений Якоби не сходится.

numpy.linalg.inv(m: ndarray) ndarray

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

Параметры:

m – двумерная квадратная матрица.

Результат:

обратная матрица m как массив numpy.ndarray с плавающей точкой.

Исключение:

ValueError – если m не квадратная или вырожденная.

Обращение выполняется методом исключения Гаусса-Жордана.

numpy.linalg.norm(x: ndarray, axis: int | None = None) float | ndarray

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

Параметры:
  • x – объект numpy.ndarray, tuple, list или range.

  • axis – необязательная ось, вдоль которой вычисляется норма. Если None (значение по умолчанию), норма берётся по сглаженным в один ряд входным данным и возвращается единственное float. В противном случае норма редуцируется вдоль этой оси и возвращается массив numpy.ndarray.

Результат:

либо Python-значение float (когда axis равно None или когда x является итерируемым объектом, отличным от ndarray), либо массив numpy.ndarray с удалённой этой осью.

2-норма вычисляется как sqrt(sum(x*x)) с использованием численно устойчивого скользящего среднего, поэтому операция не требует дополнительной памяти, пропорциональной размеру входных данных.

numpy.linalg.qr(m: ndarray, mode: str = 'reduced') tuple[ndarray, ndarray]

Раскладывает матрицу в произведение ортонормированной матрицы и верхнетреугольной матрицы.

Параметры:
  • m – двумерная матрица формы (M, N).

  • mode – либо 'reduced' (по умолчанию), либо 'complete'. В режиме 'complete' Q имеет форму (M, M), а R имеет форму (M, N). В режиме 'reduced' Q и R усекаются до ведущих min(M, N) столбцов и строк соответственно.

Результат:

двухэлементный кортеж (Q, R) из объектов numpy.ndarray такой, что m == Q @ R, где Q ортонормирована, а R верхнетреугольная.

Исключение:
  • TypeError – если m не является объектом numpy.ndarray.

  • ValueError – если m не двумерная или mode не является одним из допустимых значений.

Разложение реализовано посредством последовательных вращений Гивенса.