numpy.linalg
The NumPy linear algebra functions rely on BLAS and LAPACK to provide efficient low level implementations of standard linear algebra algorithms. Those libraries may be provided by NumPy itself using C versions of a subset of their reference implementations but, when possible, highly optimized libraries that take advantage of specialized processor functionality are preferred. Examples of such libraries are OpenBLAS, MKL (TM), and ATLAS. Because those libraries are multithreaded and processor dependent, environmental variables and external packages such as threadpoolctl may be needed to control the number of threads or specify the processor architecture.
The SciPy library also contains a linalg submodule, and there is overlap in the functionality provided by the SciPy and NumPy submodules. SciPy contains functions not found in numpy.linalg, such as functions related to LU decomposition and the Schur decomposition, multiple ways of calculating the pseudoinverse, and matrix transcendentals such as the matrix logarithm. Some functions that exist in both have augmented functionality in scipy.linalg. For example, scipy.linalg.eig can take a second matrix argument for solving generalized eigenvalue problems. Some functions in NumPy, however, have more flexible broadcasting options. For example, numpy.linalg.solve can handle “stacked” arrays, while scipy.linalg.solve accepts only a single square array as its first argument.
linalg
scipy.linalg
scipy.linalg.eig
numpy.linalg.solve
scipy.linalg.solve
dot(a, b[, out])
dot
Dot product of two arrays.
linalg.multi_dot(arrays, *[, out])
linalg.multi_dot
Compute the dot product of two or more arrays in a single function call, while automatically selecting the fastest evaluation order.
vdot(a, b)
vdot
Return the dot product of two vectors.
inner(a, b)
inner
Inner product of two arrays.
outer(a, b[, out])
outer
Compute the outer product of two vectors.
matmul(x1, x2, /[, out, casting, order, …])
matmul
Matrix product of two arrays.
tensordot(a, b[, axes])
tensordot
Compute tensor dot product along specified axes.
einsum(subscripts, *operands[, out, dtype, …])
einsum
Evaluates the Einstein summation convention on the operands.
einsum_path(subscripts, *operands[, optimize])
einsum_path
Evaluates the lowest cost contraction order for an einsum expression by considering the creation of intermediate arrays.
linalg.matrix_power(a, n)
linalg.matrix_power
Raise a square matrix to the (integer) power n.
kron(a, b)
kron
Kronecker product of two arrays.
linalg.cholesky(a)
linalg.cholesky
Cholesky decomposition.
linalg.qr(a[, mode])
linalg.qr
Compute the qr factorization of a matrix.
linalg.svd(a[, full_matrices, compute_uv, …])
linalg.svd
Singular Value Decomposition.
linalg.eig(a)
linalg.eig
Compute the eigenvalues and right eigenvectors of a square array.
linalg.eigh(a[, UPLO])
linalg.eigh
Return the eigenvalues and eigenvectors of a complex Hermitian (conjugate symmetric) or a real symmetric matrix.
linalg.eigvals(a)
linalg.eigvals
Compute the eigenvalues of a general matrix.
linalg.eigvalsh(a[, UPLO])
linalg.eigvalsh
Compute the eigenvalues of a complex Hermitian or real symmetric matrix.
linalg.norm(x[, ord, axis, keepdims])
linalg.norm
Matrix or vector norm.
linalg.cond(x[, p])
linalg.cond
Compute the condition number of a matrix.
linalg.det(a)
linalg.det
Compute the determinant of an array.
linalg.matrix_rank(M[, tol, hermitian])
linalg.matrix_rank
Return matrix rank of array using SVD method
linalg.slogdet(a)
linalg.slogdet
Compute the sign and (natural) logarithm of the determinant of an array.
trace(a[, offset, axis1, axis2, dtype, out])
trace
Return the sum along diagonals of the array.
linalg.solve(a, b)
linalg.solve
Solve a linear matrix equation, or system of linear scalar equations.
linalg.tensorsolve(a, b[, axes])
linalg.tensorsolve
Solve the tensor equation a x = b for x.
a x = b
linalg.lstsq(a, b[, rcond])
linalg.lstsq
Return the least-squares solution to a linear matrix equation.
linalg.inv(a)
linalg.inv
Compute the (multiplicative) inverse of a matrix.
linalg.pinv(a[, rcond, hermitian])
linalg.pinv
Compute the (Moore-Penrose) pseudo-inverse of a matrix.
linalg.tensorinv(a[, ind])
linalg.tensorinv
Compute the ‘inverse’ of an N-dimensional array.
linalg.LinAlgError
Generic Python-exception-derived object raised by linalg functions.
New in version 1.8.0.
Several of the linear algebra routines listed above are able to compute results for several matrices at once, if they are stacked into the same array.
This is indicated in the documentation via input parameter specifications such as a : (..., M, M) array_like. This means that if for instance given an input array a.shape == (N, M, M), it is interpreted as a “stack” of N matrices, each of size M-by-M. Similar specification applies to return values, for instance the determinant has det : (...) and will in this case return an array of shape det(a).shape == (N,). This generalizes to linear algebra operations on higher-dimensional arrays: the last 1 or 2 dimensions of a multidimensional array are interpreted as vectors or matrices, as appropriate for each operation.
a : (..., M, M) array_like
a.shape == (N, M, M)
det : (...)
det(a).shape == (N,)