code: def put_along_axis(
      arr: Union[ivy.Array, ivy.NativeArray],
      indices: Union[ivy.Array, ivy.NativeArray],
      values: Union[ivy.Array, ivy.NativeArray],
      axis: int,
      /,
      *,
      mode: Literal[
          "sum", "min", "max", "mul", "mean", "replace"
      ] = "replace",
      out: Optional[ivy.Array] = None,
  ) -> None:
      """Put values into the input array by matching 1d index and data slices
      along a specified axis.
  
      Parameters
      ----------
      arr : array_like
          The input array to modify.
      indices : array_like
          The indices of the values to put into `arr`.
      values : array_like
          The values to put into `arr`.
      axis : int
          The axis over which to put the `values`.
      mode : {'sum', 'min', 'max', 'mul', 'replace'}
          The reduction operation to apply.
      out : ndarray, optional
          Output array in which to place the result.
          If not specified, a new array is created.
  
      Note
      ----
      In case `indices` contains duplicates, the updates get accumulated in each place.
  
      Returns
      -------
      None
  
      Examples
      --------
      >>> arr = ivy.array([[4, 3, 5], [1, 2, 1]])
      >>> indices = ivy.array([[0, 1, 1], [2, 0, 0]])
      >>> values = ivy.array([[9, 8, 7], [6, 5, 4]])
      >>> ivy.put_along_axis(arr, indices, values, 1, mode='replace')
      >>> print(arr)
      ivy.array([[9, 7, 5],
                 [4, 2, 6]])
  
      >>> arr = ivy.array([[10, 30, 20], [60, 40, 50]])
      >>> axis = 1
      >>> indices = ivy.argmax(arr, axis=axis, keepdims=True)
      >>> value = 100
      >>> ivy.put_along_axis(arr, indices, value, axis, mode='add')
      >>> print(arr)
      ivy.array([[ 10, 130, 20],
                 [ 160, 40, 50]])
      """
      arr_shape = arr.shape
  
      # array containing all flat indices
      arr_ = ivy.arange(0, _numel(arr_shape)).reshape(arr_shape)
  
      # use take_along_axis to get the queried indices
      arr_idxs = ivy.take_along_axis(arr_, indices, axis)
  
      # convert the flat indices to multi-D indices
      arr_idxs = ivy.unravel_index(arr_idxs, arr_shape)
  
      # stack the multi-D indices to bring them to scatter_nd format
      arr_idxs = ivy.stack(arr_idxs, axis=-1).astype(ivy.int64)
  
      ret = ivy.scatter_nd(
          arr_idxs, values, reduction=mode, out=ivy.copy_array(arr)
      )
      return ivy.inplace_update(out, ret) if ivy.exists(out) else ret
  
imports: from typing import Optional, Union, Tuple, Iterable, Sequence, Callable, Any, Literal, List
  from numbers import Number
  from functools import partial
  import math
  import ivy
  from ivy.func_wrapper import handle_out_argument, handle_partial_mixed_function, to_native_arrays_and_back, inputs_to_native_shapes, handle_nestable, handle_array_like_without_promotion, handle_view, inputs_to_ivy_arrays, handle_array_function, handle_device, handle_backend_invalid
  from ivy.functional.ivy.general import _numel
  from ivy.utils.backend import current_backend
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 37 for calling a global function with example usage: put_along_axis() and returns: unknown