Las funciones de álgebra lineal de NumPy se basan en BLAS y LAPACK para proporcionar implementaciones eficientes de bajo nivel de algoritmos de álgebra lineal estándar. Esas bibliotecas pueden ser proporcionadas por el propio NumPy utilizando versiones C de un subconjunto de sus implementaciones de referencia, pero, cuando es posible, se prefieren las bibliotecas altamente optimizadas que aprovechan la funcionalidad del procesador especializado. Ejemplos de tales bibliotecas son OpenBLAS, MKL (TM) y ATLAS. Debido a que esas bibliotecas son multiproceso y dependen del procesador, las variables ambientales y los paquetes externos, como threadpoolctl puede ser necesario para controlar el número de subprocesos o especificar la arquitectura del procesador.

La biblioteca SciPy también contiene una linalg submódulo, y hay una superposición en la funcionalidad proporcionada por los submódulos SciPy y NumPy. SciPy contiene funciones que no se encuentran en numpy.linalg, como funciones relacionadas con la descomposición LU y la descomposición de Schur, múltiples formas de calcular el pseudoinverso y matrices trascendentales como el logaritmo matricial. Algunas funciones que existen en ambos tienen funcionalidad aumentada en scipy.linalg. Por ejemplo, scipy.linalg.eig puede tomar un segundo argumento de matriz para resolver problemas de valores propios generalizados. Sin embargo, algunas funciones de NumPy tienen opciones de transmisión más flexibles. Por ejemplo, numpy.linalg.solve puede manejar matrices “apiladas”, mientras que scipy.linalg.solve acepta solo un cuadrado array como su primer argumento.

Productos matriciales y vectoriales

dot(a, b[, out])

Producto escalar de dos matrices.

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

Calcule el producto escalar de dos o más matrices en una sola llamada de función, mientras selecciona automáticamente el orden de evaluación más rápido.

vdot(a, b)

Devuelve el producto escalar de dos vectores.

inner(a, b)

Producto interno de dos matrices.

outer(a, b[, out])

Calcule el producto externo de dos vectores.

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

Producto matricial de dos matrices.

tensordot(a, b[, axes])

Calcule el producto escalar del tensor a lo largo de ejes especificados.

einsum(subíndices, * operandos[, out, dtype, …])

Evalúa la convención de suma de Einstein sobre los operandos.

einsum_path(subíndices, * operandos[, optimize])

Evalúa el orden de contracción de menor costo para una expresión einsum considerando la creación de arreglos intermedios.

linalg.matrix_power(un)

Elevar una matriz cuadrada a la potencia (entera) n.

kron(a, b)

Producto de Kronecker de dos matrices.

Descomposiciones

linalg.cholesky(a)

Descomposición de Cholesky.

linalg.qr(a[, mode])

Calcule la factorización qr de una matriz.

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

Valor singular de descomposición.

Valores propios de la matriz

linalg.eig(a)

Calcule los valores propios y los vectores propios rectos de un cuadrado array.

linalg.eigh(a[, UPLO])

Devuelve los autovalores y autovectores de una matriz hermitiana compleja (simétrica conjugada) o una matriz simétrica real.

linalg.eigvals(a)

Calcule los valores propios de una matriz general.

linalg.eigvalsh(a[, UPLO])

Calcule los valores propios de una matriz simétrica real o hermitiana compleja.

Normas y otros números

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

Matriz o norma vectorial.

linalg.cond(X[, p])

Calcule el número de condición de una matriz.

linalg.det(a)

Calcule el determinante de un array.

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

Rango de matriz de retorno de array usando el método SVD

linalg.slogdet(a)

Calcule el signo y el logaritmo (natural) del determinante de un array.

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

Devuelve la suma a lo largo de las diagonales del array.

Resolver ecuaciones e invertir matrices

linalg.solve(a, b)

Resolver una ecuación de matriz lineal o un sistema de ecuaciones escalares lineales.

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

Resuelve la ecuación del tensor a x = b para x.

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

Devuelve la solución de mínimos cuadrados a una ecuación de matriz lineal.

linalg.inv(a)

Calcule la inversa (multiplicativa) de una matriz.

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

Calcule la pseudoinversa (Moore-Penrose) de una matriz.

linalg.tensorinv(a[, ind])

Calcule el ‘inverso’ de una dimensión N array.

Excepciones

linalg.LinAlgError

Objeto derivado de excepción de Python genérico generado por funciones de linalg.

Álgebra lineal en varias matrices a la vez

Nuevo en la versión 1.8.0.

Varias de las rutinas de álgebra lineal enumeradas anteriormente pueden calcular resultados para varias matrices a la vez, si se apilan en la misma array.

Esto se indica en la documentación mediante especificaciones de parámetros de entrada como a : (..., M, M) array_like. Esto significa que si, por ejemplo, se le da una entrada array a.shape == (N, M, M), se interpreta como una “pila” de N matrices, cada una de tamaño M-por-M. Se aplica una especificación similar a los valores de retorno, por ejemplo, el determinante tiene det : (...) y en este caso devolverá un array de forma det(a).shape == (N,). Esto se generaliza a operaciones de álgebra lineal en matrices de dimensiones superiores: la última 1 o 2 dimensiones de una array se interpretan como vectores o matrices, según corresponda para cada operación.