scipy.linalg.pinv2(a, cond=None, rcond=None, return_rank=False, check_finite=True)[source]

Compute the (Moore-Penrose) pseudo-inverse of a matrix.

scipy.linalg.pinv2 is deprecated since SciPy 1.7.0, use scipy.linalg.pinv instead for better tolerance control.

Calculate a generalized inverse of a matrix using its singular-value decomposition and including all ‘large’ singular values.

a(M, N) array_like

Matrix to be pseudo-inverted.

cond, rcondfloat or None

Cutoff for ‘small’ singular values; singular values smaller than this value are considered as zero. If both are omitted, the default value max(M,N)*largest_singular_value*eps is used where eps is the machine precision value of the datatype of a.

Changed in version 1.3.0: Previously the default cutoff value was just eps*f where f was 1e3 for single precision and 1e6 for double precision.

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.

B(N, M) ndarray

The pseudo-inverse of matrix a.


The effective rank of the matrix. Returned if return_rank is True.


If SVD computation does not converge.