docstr: Perform an associative scan over the given array.
  
  Parameters
  ----------
  self
      The array to scan over.
  fn
      The associative function to apply.
  reverse
      Whether to scan in reverse with respect to the given axis.
  axis
      The axis to scan over.
  
  Returns
  -------
  ret
      The result of the scan.
code: def associative_scan(
      self: ivy.Array,
      fn: Callable,
      /,
      *,
      reverse: bool = False,
      axis: int = 0,
  ) -> ivy.Array:
      """Perform an associative scan over the given array.
  
      Parameters
      ----------
      self
          The array to scan over.
      fn
          The associative function to apply.
      reverse
          Whether to scan in reverse with respect to the given axis.
      axis
          The axis to scan over.
  
      Returns
      -------
      ret
          The result of the scan.
      """
      return ivy.associative_scan(
          self._data, fn, reverse=reverse, axis=axis
      )
  
imports: import abc
  from typing import Optional, Union, Sequence, Tuple, List, Iterable, Callable, Literal, Any
  from numbers import Number
  import ivy
  from ivy import handle_view
label_desc: Use image node_id 23 for calling the _ArrayWithManipulationExperimental obj's underlying member method code with example usage: obj.associative_scan() and returns: ivy