code: def reconstruct_skel_matrix(A, k, idx):
      """
      Reconstruct skeleton matrix from ID.
  
      The skeleton matrix can be reconstructed from the original matrix `A` and its
      ID rank and indices `k` and `idx`, respectively, as::
  
          B = A[:,idx[:k]]
  
      The original matrix can then be reconstructed via::
  
          numpy.hstack([B, numpy.dot(B, proj)])[:,numpy.argsort(idx)]
  
      See also :func:`reconstruct_matrix_from_id` and
      :func:`reconstruct_interp_matrix`.
  
      ..  This function automatically detects the matrix data type and calls the
          appropriate backend. For details, see :func:`backend.idd_copycols` and
          :func:`backend.idz_copycols`.
  
      Parameters
      ----------
      A : :class:`numpy.ndarray`
          Original matrix.
      k : int
          Rank of ID.
      idx : :class:`numpy.ndarray`
          Column index array.
  
      Returns
      -------
      :class:`numpy.ndarray`
          Skeleton matrix.
      """
      if _is_real(A):
          return backend.idd_copycols(A, k, idx + 1)
      else:
          return backend.idz_copycols(A, k, idx + 1)
  
file_path: catboost/contrib/python/scipy/py2/scipy/linalg/interpolative.py
imports: import scipy.linalg._interpolative_backend
  import numpy
label_desc: Use image node_id 7 for calling a global function with example usage: reconstruct_skel_matrix(A, k, idx) and returns: backend, backend