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 diagonal(self, k=0):
      rows, cols = self.shape
      if k <= -rows or k >= cols:
          raise ValueError("k exceeds matrix dimensions")
      fn = getattr(_sparsetools, self.format + "_diagonal")
      y = np.empty(
          min(rows + min(k, 0), cols - max(k, 0)),
          dtype=upcast(self.dtype),
      )
      fn(
          k,
          self.shape[0],
          self.shape[1],
          self.indptr,
          self.indices,
          self.data,
          y,
      )
      return y
  
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 20 for calling the _cs_matrix obj's underlying member method code with example usage: obj.diagonal(k) and returns: y