dpnp.linalg.matrix_rank

dpnp.linalg.matrix_rank(A, tol=None, hermitian=False, *, rtol=None)[source]

Return matrix rank of array using SVD method.

Rank of the array is the number of singular values of the array that are greater than tol.

Parameters:
A{(M,), (..., M, N)} {dpnp.ndarray, usm_ndarray}

Input vector or stack of matrices.

tol(...) {None, float, dpnp.ndarray, usm_ndarray}, optional

Threshold below which SVD values are considered zero. Only tol or rtol can be set at a time. If none of them are provided, defaults to S.max() * max(M, N) * eps where S is an array with singular values for A, and eps is the epsilon value for datatype of S.

Default: None.

hermitianbool, optional

If True, A is assumed to be Hermitian (symmetric if real-valued), enabling a more efficient method for finding singular values.

Default: False.

rtol(...) {None, float, dpnp.ndarray, usm_ndarray}, optional

Parameter for the relative tolerance component. Only tol or rtol can be set at a time. If none of them are provided, defaults to max(M, N) * eps where eps is the epsilon value for datatype of S (an array with singular values for A).

Default: None.

Returns:
rank(...) dpnp.ndarray

Rank of A.

See also

dpnp.linalg.svd

Singular Value Decomposition.

Examples

>>> import dpnp as np
>>> from dpnp.linalg import matrix_rank
>>> matrix_rank(np.eye(4)) # Full rank matrix
array(4)
>>> I=np.eye(4); I[-1,-1] = 0. # rank deficient matrix
>>> matrix_rank(I)
array(3)
>>> matrix_rank(np.ones((4,))) # 1 dimension - rank 1 unless all 0
array(1)
>>> matrix_rank(np.zeros((4,)))
array(0)