class_docstr: Take the values along ``axis`` at locations ``indices``.
  ``
  idx = indices[p_0, ..., p_{axis-1}, i, p_{axis+1}, ..., p_D],
  output[p_0, ..., p_{axis-1}, i, p_{axis+1}, ..., p_D] =
  = x[p_0, ..., p_{axis-1}, idx, p_{axis+1}, ..., p_D]
  ``
  
  Parameters
  ----------
  x: tensor<*D, T> (Required)
  indices: tensor<*K, T> (Required)
      * ``rank(indices) == rank(x)``.
  axis: const i32 (Optional):
      * Default to ``0``.
  
  Returns
  -------
  tensor<*D, T>:
      * output tensor has the same shape as ``indices``.
  
  Attributes
  ----------
  T: fp32
code: def value_inference(self):
      x = self.x.val
      indices = self.indices.val
      axis = self.axis.val
      return np.take_along_axis(x, indices, axis)
  
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 gather_along_axis obj's underlying member method code with example usage: obj.value_inference() and returns: np