code: def _init_pad(array, pad_width, fill_value=None):
      new_shape = tuple(
          left + size + right
          for size, (left, right) in zip(array.shape, pad_width)
      )
      if fill_value is not None:
          padded = ivy.ones(new_shape, dtype=array.dtype) * fill_value
      else:
          padded = ivy.zeros(new_shape, dtype=array.dtype)
      original_area_slice = tuple(
          slice(left, left + size)
          for size, (left, right) in zip(array.shape, pad_width)
      )
      padded[original_area_slice] = array
      return padded
  
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 21 for calling a global function with example usage: _init_pad(array, pad_width, fill_value) and returns: padded