class_docstr: A pandas ExtensionArray for NumPy data.
  
  .. versionadded :: 0.24.0
  
  This is mostly for internal compatibility, and is not especially
  useful on its own.
  
  Parameters
  ----------
  values : ndarray
      The NumPy ndarray to wrap. Must be 1-dimensional.
  copy : bool, default False
      Whether to copy `values`.
  
  Notes
  -----
  Operations like ``+`` and applying ufuncs requires NumPy>=1.13.
class_docstr_tok: ["A","pandas","ExtensionArray","for","NumPy","data",".","..","versionadded",":",":","0.24.0","This","is","mostly","for","internal","compatibility",",","and","is","not","especially","useful","on","its","own",".","Parameters","--","--","--","--","--","values",":","ndarray","The","NumPy","ndarray","to","wrap",".","Must","be","1-dimensional",".","copy",":","bool",",","default","False","Whether","to","copy","`","values","`",".","Notes","--","--","-","Operations","like","``","+","``","and","applying","ufuncs","requires","NumPy",">","=1.13","."]
code: def __array_ufunc__(self, ufunc, method, *inputs, **kwargs):
      # Lightly modified version of
      # https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/\
      # numpy.lib.mixins.NDArrayOperatorsMixin.html
      # The primary modification is not boxing scalar return values
      # in PandasArray, since pandas' ExtensionArrays are 1-d.
      out = kwargs.get("out", ())
      for x in inputs + out:
          # Only support operations with instances of _HANDLED_TYPES.
          # Use PandasArray instead of type(self) for isinstance to
          # allow subclasses that don't override __array_ufunc__ to
          # handle PandasArray objects.
          if not isinstance(x, self._HANDLED_TYPES + (PandasArray,)):
              return NotImplemented
  
      # Defer to the implementation of the ufunc on unwrapped values.
      inputs = tuple(
          x._ndarray if isinstance(x, PandasArray) else x
          for x in inputs
      )
      if out:
          kwargs["out"] = tuple(
              x._ndarray if isinstance(x, PandasArray) else x
              for x in out
          )
      result = getattr(ufunc, method)(*inputs, **kwargs)
  
      if type(result) is tuple and len(result):
          # multiple return values
          if not lib.is_scalar(result[0]):
              # re-box array-like results
              return tuple(type(self)(x) for x in result)
          else:
              # but not scalar reductions
              return result
      elif method == "at":
          # no return value
          return None
      else:
          # one return value
          if not lib.is_scalar(result):
              # re-box array-like results, but not scalar reductions
              result = type(self)(result)
          return result
  
imports: import numbers
  import numpy
  from pandas._libs import lib
  from pandas.compat.numpy import function
  from pandas.util._validators import validate_fillna_kwargs
  from pandas.core.dtypes.dtypes import ExtensionDtype
  from pandas.core.dtypes.generic import ABCIndexClass, ABCSeries
  from pandas.core.dtypes.inference import is_array_like, is_list_like
  from pandas import compat
  from pandas.core import nanops
  from pandas.core.missing import backfill_1d, pad_1d
  from .base import ExtensionArray, ExtensionOpsMixin
label_desc: Use image node_id 7 for calling the PandasArray obj's underlying member method code with example usage: obj.__array_ufunc__(ufunc, method) and returns: NotImplemented, tuple, result, None, result