scipy.linalg.pinv¶
-
scipy.linalg.
pinv
(a, cond=None, rcond=None, return_rank=False, check_finite=True)[source]¶ Compute the (Moore-Penrose) pseudo-inverse of a matrix.
Calculate a generalized inverse of a matrix using a least-squares solver.
- Parameters
- a(M, N) array_like
Matrix to be pseudo-inverted.
- cond, rcondfloat, optional
Cutoff factor for ‘small’ singular values. In
lstsq
, singular values less thancond*largest_singular_value
will be considered as zero. If both are omitted, the default valuemax(M, N) * eps
is passed tolstsq
whereeps
is the corresponding machine precision value of the datatype ofa
.Changed in version 1.3.0: Previously the default cutoff value was just eps without the factor
max(M, N)
.- return_rankbool, optional
if True, return the effective rank of the matrix
- 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.
- Returns
- B(N, M) ndarray
The pseudo-inverse of matrix a.
- rankint
The effective rank of the matrix. Returned if return_rank == True
- Raises
- LinAlgError
If computation does not converge.
Examples
>>> from scipy import linalg >>> a = np.random.randn(9, 6) >>> B = linalg.pinv(a) >>> np.allclose(a, np.dot(a, np.dot(B, a))) True >>> np.allclose(B, np.dot(B, np.dot(a, B))) True