scipy.linalg.

inv#

scipy.linalg.inv(a, overwrite_a=False, check_finite=True, assume_a=None)[source]#

Compute the inverse of a matrix.

If the data matrix is known to be a particular type then supplying the corresponding string to assume_a key chooses the dedicated solver. The available options are

general

β€˜general’ (or β€˜gen’)

upper triangular

β€˜upper triangular’

lower triangular

β€˜lower triangular’

symmetric positive definite

β€˜pos’, β€˜pos upper’, β€˜pos lower’

For the β€˜pos upper’ and β€˜pos lower’ options, only the specified triangle of the input matrix is used, and the other triangle is not referenced.

Parameters:
aarray_like, shape (…, M, M)

Square matrix (or a batch of matrices) to be inverted.

overwrite_abool, optional

Discard data in a (may improve performance). Default is False.

check_finitebool, optional

Whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.

assume_astr, optional

Valid entries are described above. If omitted or None, checks are performed to identify structure so the appropriate solver can be called.

Returns:
ainvndarray

Inverse of the matrix a.

Raises:
LinAlgError

If a is singular.

ValueError

If a is not square, or not 2D.

Notes

The input array a may represent a single matrix or a collection (a.k.a. a β€œbatch”) of square matrices. For example, if a.shape == (4, 3, 2, 2), it is interpreted as a (4, 3)-shaped batch of \(2\times 2\) matrices.

This routine checks the condition number of the a matrix and emits a LinAlgWarning for ill-conditioned inputs.

Examples

>>> import numpy as np
>>> from scipy import linalg
>>> a = np.array([[1., 2.], [3., 4.]])
>>> linalg.inv(a)
array([[-2. ,  1. ],
       [ 1.5, -0.5]])
>>> np.dot(a, linalg.inv(a))
array([[ 1.,  0.],
       [ 0.,  1.]])