code: def random_shift(
      x,
      wrg,
      hrg,
      row_axis=1,
      col_axis=2,
      channel_axis=0,
      fill_mode="nearest",
      cval=0.0,
      interpolation_order=1,
  ):
      """Performs a random spatial shift of a Numpy image tensor.
  
      # Arguments
          x: Input tensor. Must be 3D.
          wrg: Width shift range, as a float fraction of the width.
          hrg: Height shift range, as a float fraction of the height.
          row_axis: Index of axis for rows in the input tensor.
          col_axis: Index of axis for columns in the input tensor.
          channel_axis: Index of axis for channels in the input tensor.
          fill_mode: Points outside the boundaries of the input
              are filled according to the given mode
              (one of `{'constant', 'nearest', 'reflect', 'wrap'}`).
          cval: Value used for points outside the boundaries
              of the input if `mode='constant'`.
          interpolation_order: int, order of spline interpolation.
              see `ndimage.interpolation.affine_transform`
  
      # Returns
          Shifted Numpy image tensor.
      """
      h, w = x.shape[row_axis], x.shape[col_axis]
      tx = np.random.uniform(-hrg, hrg) * h
      ty = np.random.uniform(-wrg, wrg) * w
      x = apply_affine_transform(
          x,
          tx=tx,
          ty=ty,
          row_axis=row_axis,
          col_axis=col_axis,
          channel_axis=channel_axis,
          fill_mode=fill_mode,
          cval=cval,
          order=interpolation_order,
      )
      return x
  
file_path: keras-preprocessing/keras_preprocessing/image/affine_transformations.py
imports: import numpy
  from .utils import array_to_img, img_to_array
label_desc: Use image node_id 3 for calling a global function with example usage: random_shift(x, wrg, hrg, row_axis, col_axis, channel_axis, fill_mode, cval, interpolation_order) and returns: x