class_docstr: Scatter ``updates`` to ``data`` at locations ``indices`` at dimension ``axis`` by operation ``mode``.
  ``mode == update`` for instance.
  ``
  idx = indices[p_0, ..., p_{axis-1}, i, p_{axis+1}, ..., p_D]
  output[p_0, ..., p_{axis-1}, idx, p_{axis+1}, ..., p_D] =
  updates[p_0, ..., p_{axis-1}, i, p_{axis+1}, ..., p_D]
  `` for ``i`` in ``[0, len(indices)]``.
  Otherwise
  ``
  output[p_0, ..., p_{axis-1}, j, p_{axis+1}, ..., p_D] =
  data[p_0, ..., p_{axis-1}, j, p_{axis+1}, ..., p_D]
  ``
  
  ``mode == add`` for instance.
  ``
  idx = indices[p_0, ..., p_{axis-1}, i, p_{axis+1}, ..., p_D]
  output[p_0, ..., p_{axis-1}, idx, p_{axis+1}, ..., p_D] =
  updates[p_0, ..., p_{axis-1}, i, p_{axis+1}, ..., p_D] +
  x[p_0, ..., p_{axis-1}, indice[i], p_{axis+1}, ..., p_D]
  `` for ``i`` in ``[0, len(indices)]
  Otherwise
  ``
  output[p_0, ..., p_{axis-1}, j, p_{axis+1}, ..., p_D] =
  data[p_0, ..., p_{axis-1}, j, p_{axis+1}, ..., p_D]
  ``
  
  Parameters
  ----------
  data: tensor<*D, T> (Required)
  indices: tensor<*K,T> (Required)
      * ``rank(indices) == rank(data)``.
  updates: tensor<*K, T> (Required)
      * must be the same shape as ``indices``.
  axis: const i32 (Optional)
      * Default to ``0``.
  mode: const string (Optional)
      * Default to ``add``.
      * Can be the following modes:
          * ``update``
          * ``add``
          * ``sub``
          * ``mul``
          * ``div``
          * ``max``
          * ``min``
  
  Returns
  -------
  tensor<*D, T>
      * with the same type and shape as input ``x``.
  
  Attributes
  ----------
  T: fp32
code: def value_inference(self):
      data = np.copy(self.data.val)
      indices = self.indices.val
      updates = self.updates.val
      axis = self.axis.val
      np_output = data
      np.put_along_axis(np_output, indices, updates, axis=axis)
      return np_output
  
imports: from coremltools.converters.mil.mil import SYMBOL, VALUE
  from coremltools.converters.mil.mil.types.symbolic import is_compatible_symbolic_vector
  from ._op_reqs import *
  import numbers
label_desc: Use image node_id 2 for calling the scatter_along_axis obj's underlying member method code with example usage: obj.value_inference() and returns: np_output