code: def _array_indexing(array, key, key_dtype, axis):
      """Index an array or a sparse array"""
      if issparse(array):
          # check if we have an boolean array-likes to make the proper indexing
          if key_dtype == "bool":
              key = np.asarray(key)
      if isinstance(key, tuple):
          key = list(key)
      if numba.cuda.is_cuda_array(array):
          array = np.asarray(array)
      return array[key] if axis == 0 else array[:, key]
  
imports: from ..preprocessing import FunctionTransformer
  from ....thirdparty_adapters import check_array
  from ..utils.validation import check_is_fitted
  from ..utils.skl_dependencies import TransformerMixin, BaseComposition, BaseEstimator
  from cuml.internals import _deprecate_pos_args
  from cuml.internals.array_sparse import SparseCumlArray
  from cuml.internals.global_settings import _global_settings_data
  import cuml
  from itertools import chain
  from itertools import compress
  from joblib import Parallel
  import functools
  import timeit
  import numbers
  from cuml.internals.import_utils import has_sklearn
  from contextlib import contextmanager
  from collections import defaultdict
  import warnings
  from cuml.internals.safe_imports import cpu_only_import_from
  from cuml.internals.safe_imports import gpu_only_import_from
  from cuml.internals.safe_imports import cpu_only_import
  from cuml.internals.safe_imports import gpu_only_import
label_desc: Use image node_id 5 for calling a global function with example usage: _array_indexing(array, key, key_dtype, axis) and returns: unknown