code: def assert_numpy_array_equal(
      left,
      right,
      strict_nan: bool = False,
      check_dtype: bool | Literal["equiv"] = True,
      err_msg=None,
      check_same=None,
      obj: str = "numpy array",
      index_values=None,
  ) -> None:
      """
      Check that 'np.ndarray' is equivalent.
  
      Parameters
      ----------
      left, right : numpy.ndarray or iterable
          The two arrays to be compared.
      strict_nan : bool, default False
          If True, consider NaN and None to be different.
      check_dtype : bool, default True
          Check dtype if both a and b are np.ndarray.
      err_msg : str, default None
          If provided, used as assertion message.
      check_same : None|'copy'|'same', default None
          Ensure left and right refer/do not refer to the same memory area.
      obj : str, default 'numpy array'
          Specify object name being compared, internally used to show appropriate
          assertion message.
      index_values : numpy.ndarray, default None
          optional index (shared by both left and right), used in output.
      """
      __tracebackhide__ = True
  
      # instance validation
      # Show a detailed error message when classes are different
      assert_class_equal(left, right, obj=obj)
      # both classes must be an np.ndarray
      _check_isinstance(left, right, np.ndarray)
  
      def _get_base(obj):
          return (
              obj.base
              if getattr(obj, "base", None) is not None
              else obj
          )
  
      left_base = _get_base(left)
      right_base = _get_base(right)
  
      if check_same == "same":
          if left_base is not right_base:
              raise AssertionError(
                  f"{repr(left_base)} is not {repr(right_base)}"
              )
      elif check_same == "copy":
          if left_base is right_base:
              raise AssertionError(
                  f"{repr(left_base)} is {repr(right_base)}"
              )
  
      def _raise(left, right, err_msg):
          if err_msg is None:
              if left.shape != right.shape:
                  raise_assert_detail(
                      obj,
                      f"{obj} shapes are different",
                      left.shape,
                      right.shape,
                  )
  
              diff = 0
              for left_arr, right_arr in zip(left, right):
                  # count up differences
                  if not array_equivalent(
                      left_arr, right_arr, strict_nan=strict_nan
                  ):
                      diff += 1
  
              diff = diff * 100.0 / left.size
              msg = (
                  f"{obj} values are different ({np.round(diff, 5)} %)"
              )
              raise_assert_detail(
                  obj, msg, left, right, index_values=index_values
              )
  
          raise AssertionError(err_msg)
  
      # compare shape and values
      if not array_equivalent(left, right, strict_nan=strict_nan):
          _raise(left, right, err_msg)
  
      if check_dtype:
          if isinstance(left, np.ndarray) and isinstance(
              right, np.ndarray
          ):
              assert_attr_equal("dtype", left, right, obj=obj)
  
imports: from __future__ import annotations
  import operator
  from typing import Literal, cast
  import numpy
  from pandas._libs.missing import is_matching_na
  from pandas._libs.sparse import SparseIndex
  import pandas._libs.testing
  from pandas._libs.tslibs.np_datetime import compare_mismatched_resolutions
  from pandas.core.dtypes.common import is_bool, is_categorical_dtype, is_extension_array_dtype, is_integer_dtype, is_interval_dtype, is_number, is_numeric_dtype, needs_i8_conversion
  from pandas.core.dtypes.dtypes import CategoricalDtype, DatetimeTZDtype, PandasDtype
  from pandas.core.dtypes.missing import array_equivalent
  import pandas
  from pandas import Categorical, DataFrame, DatetimeIndex, Index, IntervalIndex, MultiIndex, PeriodIndex, RangeIndex, Series, TimedeltaIndex
  from pandas.core.algorithms import take_nd
  from pandas.core.arrays import DatetimeArray, ExtensionArray, IntervalArray, PeriodArray, TimedeltaArray
  from pandas.core.arrays.datetimelike import DatetimeLikeArrayMixin
  from pandas.core.arrays.string_ import StringDtype
  from pandas.core.indexes.api import safe_sort_index
  from pandas.io.formats.printing import pprint_thing
label_desc: Use image node_id 15 for calling a global function with example usage: assert_numpy_array_equal(left, right, strict_nan, check_dtype, err_msg, check_same, obj, index_values) and returns: unknown