code: def serial(self, obj: np.ndarray, context: Dict):
      header = {}
      if obj.dtype.hasobject:
          header["pickle"] = True
          buffers = pickle_buffers(obj)
          return (header,), buffers, True
  
      order = "C"
      if obj.flags.f_contiguous:
          order = "F"
      elif not obj.flags.c_contiguous:
          obj = np.ascontiguousarray(obj)
      try:
          desc = np.lib.format.dtype_to_descr(obj.dtype)
          dtype_new_order = None
      except ValueError:
          # for structured dtype, array[[field2, field1]] will create a view,
          # and dtype_to_desc will fail due to the order
          fields = obj.dtype.fields
          new_fields = sorted(fields, key=lambda k: fields[k][1])
          desc = np.lib.format.dtype_to_descr(obj.dtype[new_fields])
          dtype_new_order = list(fields)
      header.update(
          dict(
              pickle=False,
              descr=desc,
              dtype_new_order=dtype_new_order,
              shape=list(obj.shape),
              strides=list(obj.strides),
              order=order,
          )
      )
      return (
          (header,),
          [memoryview(obj.ravel(order=order).view("uint8").data)],
          True,
      )
  
imports: from typing import Any, Dict, List, Tuple
  import numpy
  from .core import Serializer, buffered, pickle_buffers, unpickle_buffers
label_desc: Use image node_id 1 for calling the NDArraySerializer obj's underlying member method code with example usage: obj.serial(obj, context) and returns: header,  list,  True, header,  buffers,  True