#### Previous topic

scipy.sparse.linalg.lobpcg

#### Next topic

scipy.sparse.linalg.splu

# scipy.sparse.linalg.svds

`scipy.sparse.linalg.``svds`(A, k=6, ncv=None, tol=0, which='LM', v0=None, maxiter=None, return_singular_vectors=True)

  Compute the largest k singular values/vectors for a sparse matrix.

  Parameters:

  A : {sparse matrix, LinearOperator}

  > Array to compute the SVD on, of shape (M, N)

  k : int, optional

  > Number of singular values and vectors to compute. Must be 1 <= k < min(A.shape).

  ncv : int, optional

  > The number of Lanczos vectors generated ncv must be greater than k+1 and smaller than n; it is recommended that ncv > 2*k Default: `min(n, 2*k + 1)`

  tol : float, optional

  > Tolerance for singular values. Zero (default) means machine precision.

  which : str, [‘LM’ | ‘SM’], optional

  > Which k singular values to find:

  > > - ‘LM’ : largest singular values
  > > - ‘SM’ : smallest singular values

  > New in version 0.12.0.

  v0 : ndarray, optional

  > Starting vector for iteration, of length min(A.shape). Should be an (approximate) left singular vector if N > M and a right singular vector otherwise. Default: random

  > New in version 0.12.0.

  maxiter : int, optional

  > Maximum number of iterations.

  > New in version 0.12.0.

  return_singular_vectors : bool or str, optional

  > - True: return singular vectors (True) in addition to singular values.

  > New in version 0.12.0.

  > - “u”: only return the u matrix, without computing vh (if N > M).
  > - “vh”: only return the vh matrix, without computing u (if N <= M).

  > New in version 0.16.0.

  Returns:

  u : ndarray, shape=(M, k)

  > Unitary matrix having left singular vectors as columns. If return_singular_vectors is “vh”, this variable is not computed, and None is returned instead.

  s : ndarray, shape=(k,)

  > The singular values.

  vt : ndarray, shape=(k, N)

  > Unitary matrix having right singular vectors as rows. If return_singular_vectors is “u”, this variable is not computed, and None is returned instead.

  Notes

  This is a naive implementation using ARPACK as an eigensolver on A.H * A or A * A.H, depending on which one is more efficient.