class_docstr: base matrix class for compressed row and column oriented matrices
class_docstr_tok: ["base","matrix","class","for","compressed","row","and","column","oriented","matrices"]
code: def _prepare_indices(self, i, j):
      M, N = self._swap(self.shape)
  
      def check_bounds(indices, bound):
          idx = indices.max()
          if idx >= bound:
              raise IndexError(
                  "index (%d) out of range (>= %d)" % (idx, bound)
              )
          idx = indices.min()
          if idx < -bound:
              raise IndexError(
                  "index (%d) out of range (< -%d)" % (idx, bound)
              )
  
      check_bounds(i, M)
      check_bounds(j, N)
  
      i = np.asarray(i, dtype=self.indices.dtype)
      j = np.asarray(j, dtype=self.indices.dtype)
      return i, j, M, N
  
imports: from __future__ import division, print_function, absolute_import
  from warnings import warn
  import operator
  import numpy
  from scipy._lib.six import zip
  from scipy._lib._util import _prune_array
  from .base import spmatrix, isspmatrix, SparseEfficiencyWarning
  from .data import _data_matrix, _minmax_mixin
  from .dia import dia_matrix
  from .None import _sparsetools
  from .sputils import upcast, upcast_char, to_native, isdense, isshape, getdtype, isscalarlike, IndexMixin, get_index_dtype, downcast_intp_index, get_sum_dtype, check_shape, matrix, asmatrix
label_desc: Use image node_id 28 for calling the _cs_matrix obj's underlying member method code with example usage: obj._prepare_indices(i, j) and returns: i,  j,  M,  N