code: def _recarray_from_array(arr, names, drop_name_dim=_NoValue):
      """Create recarray from input array `arr`, field names `names`"""
      if not arr.dtype.isbuiltin:  # Structured array as input
          # Rename fields
          dtype = np.dtype(
              [(n, d[1]) for n, d in zip(names, arr.dtype.descr)]
          )
          return arr.view(dtype)
      # Can drop name axis for > 1D arrays or row vectors (scalar per name).
      can_name_drop = arr.ndim > 1 or len(names) > 1
      if can_name_drop and drop_name_dim is _NoValue:
          warnings.warn(
              "Default behavior of make_recarray and > 1D arrays will "
              "change in next Nipy release.  Current default returns\n"
              "array with same number of dimensions as input, with "
              "axis corresponding to the field names having length 1\n; "
              "Future default will be to drop this length 1 axis. Please "
              "change your code to use explicit True or False for\n"
              "compatibility with future Nipy.",
              VisibleDeprecationWarning,
              stacklevel=2,
          )
          # This default will change to True in next version of Nipy
          drop_name_dim = False
      dtype = np.dtype([(n, arr.dtype) for n in names])
      # At least for numpy <= 1.7.1, the dimension that numpy applies the names
      # to depends on the memory layout (C or F).  Ensure C layout for consistent
      # application of names to last dimension.
      rec_arr = np.ascontiguousarray(arr).view(dtype)
      if can_name_drop and drop_name_dim:
          rec_arr.shape = arr.shape[:-1]
      return rec_arr
  
imports: import itertools
  import warnings
  from string import ascii_letters, digits
  import numpy
  import sympy
  from scipy.linalg import pinv
  from sympy import Dummy, default_sort_key
  from sympy.utilities.lambdify import implemented_function, lambdify
  from nipy.algorithms.utils.matrices import full_rank, matrix_rank
  from nipy.utils import VisibleDeprecationWarning, _NoValue
label_desc: Use image node_id 7 for calling a global function with example usage: _recarray_from_array(arr, names, drop_name_dim) and returns: rec_arr, arr