code: def sorted_svd(m, k, which="LM"):
      # Compute svd of a dense matrix m, and return singular vectors/values
      # sorted.
      if isspmatrix(m):
          m = m.todense()
      u, s, vh = svd(m)
      if which == "LM":
          ii = np.argsort(s)[-k:]
      elif which == "SM":
          ii = np.argsort(s)[:k]
      else:
          raise ValueError("unknown which=%r" % (which,))
  
      return u[:, ii], s[ii], vh[ii]
  
imports: from __future__ import division, print_function, absolute_import
  import threading
  import itertools
  import numpy
  from numpy.testing import assert_allclose, assert_array_almost_equal_nulp, assert_equal, assert_array_equal
  from pytest import raises
  import pytest
  from numpy import dot, conj, random
  from scipy.linalg import eig, eigh, hilbert, svd
  from scipy.sparse import csc_matrix, csr_matrix, isspmatrix, diags, rand
  from scipy.sparse.linalg import LinearOperator, aslinearoperator
  from scipy.sparse.linalg.eigen.arpack import eigs, eigsh, svds, ArpackNoConvergence, arpack
  from scipy._lib._gcutils import assert_deallocated, IS_PYPY
  from scipy._lib._numpy_compat import suppress_warnings
label_desc: Use image node_id 20 for calling a global function with example usage: sorted_svd(m, k, which) and returns: u,  s,  vh