docs: def offset(img, offset, fill_value=0):
      """
      Moves the contents of image without changing the image size. The missing
      values are given a specified fill value.
  
      Parameters
      ----------
      img : array
          Image.
      offset : (vertical_offset, horizontal_offset)
          Tuple of length 2, specifying the offset along the two axes.
      fill_value : dtype of img
          Fill value. Defaults to 0.
      """
  
      sh = img.shape
      if sh == (0, 0):
          return img
      else:
          x = np.empty(sh)
          x[:] = fill_value
          x[max(offset[0], 0):min(sh[0]+offset[0], sh[0]),
            max(offset[1], 0):min(sh[1]+offset[1], sh[1])] = \
              img[max(-offset[0], 0):min(sh[0]-offset[0], sh[0]),
                  max(-offset[1], 0):min(sh[1]-offset[1], sh[1])]
          return x