code: def gaussian_noise(
      arr: np.array,
      indices: Tuple[
          slice, ...
      ],  # Alt. Union[int, Sequence[int], Tuple[np.array]],
      indexed_axes: Sequence[int],
      perturb_mean: float = 0.0,
      perturb_std: float = 0.01,
      **kwargs,
  ) -> np.array:
      """
      Add gaussian noise to the input at indices.
  
      Parameters
      ----------
      arr: np.ndarray
           Array to be perturbed.
      indices: int, sequence, tuple
          Array-like, with a subset shape of arr.
      indexed_axes: sequence
          The dimensions of arr that are indexed.
          These need to be consecutive, and either include the first or last dimension of array.
      perturb_mean (float):
          The mean for gaussian noise.
      perturb_std (float):
          The standard deviation for gaussian noise.
      kwargs: optional
          Keyword arguments.
  
      Returns
      -------
      arr_perturbed: np.ndarray
           The array which some of its indices have been perturbed.
      """
  
      indices = expand_indices(arr, indices, indexed_axes)
      noise = np.random.normal(
          loc=perturb_mean, scale=perturb_std, size=arr.shape
      )
  
      arr_perturbed = copy.copy(arr)
      arr_perturbed[indices] = (arr_perturbed + noise)[indices]
  
      return arr_perturbed
  
file_path: Quantus/quantus/functions/perturb_func.py
imports: import copy
  import random
  import warnings
  from typing import Any, Callable, Sequence, Tuple, Union, Optional
  import cv2
  import numpy
  from scipy.sparse import lil_matrix, csc_matrix
  from scipy.sparse.linalg import spsolve
  from quantus.helpers.utils import get_baseline_value, blur_at_indices, expand_indices, get_leftover_shape, offset_coordinates
label_desc: Use image node_id 5 for calling a global function with example usage: gaussian_noise(arr, indices, indexed_axes, perturb_mean, perturb_std) and returns: arr_perturbed