code: def fromarrays(
      arrayList,
      dtype=None,
      shape=None,
      formats=None,
      names=None,
      titles=None,
      aligned=False,
      byteorder=None,
  ):
      """create a record array from a (flat) list of arrays
  
      >>> x1=np.array([1,2,3,4])
      >>> x2=np.array(['a','dd','xyz','12'])
      >>> x3=np.array([1.1,2,3,4])
      >>> r = np.core.records.fromarrays([x1,x2,x3],names='a,b,c')
      >>> print(r[1])
      (2, 'dd', 2.0)
      >>> x1[1]=34
      >>> r.a
      array([1, 2, 3, 4])
      """
  
      arrayList = [sb.asarray(x) for x in arrayList]
  
      if shape is None or shape == 0:
          shape = arrayList[0].shape
  
      if isinstance(shape, int):
          shape = (shape,)
  
      if formats is None and dtype is None:
          # go through each object in the list to see if it is an ndarray
          # and determine the formats.
          formats = []
          for obj in arrayList:
              if not isinstance(obj, ndarray):
                  raise ValueError(
                      "item in the array list must be an ndarray."
                  )
              formats.append(obj.dtype.str)
          formats = ",".join(formats)
  
      if dtype is not None:
          descr = sb.dtype(dtype)
          _names = descr.names
      else:
          parsed = format_parser(
              formats, names, titles, aligned, byteorder
          )
          _names = parsed._names
          descr = parsed._descr
  
      # Determine shape from data-type.
      if len(descr) != len(arrayList):
          raise ValueError(
              "mismatch between the number of fields "
              "and the number of arrays"
          )
  
      d0 = descr[0].shape
      nn = len(d0)
      if nn > 0:
          shape = shape[:-nn]
  
      for k, obj in enumerate(arrayList):
          nn = descr[k].ndim
          testshape = obj.shape[: obj.ndim - nn]
          if testshape != shape:
              raise ValueError("array-shape mismatch in array %d" % k)
  
      _array = recarray(shape, descr)
  
      # populate the record array (makes a copy)
      for i in range(len(arrayList)):
          _array[_names[i]] = arrayList[i]
  
      return _array
  
imports: from __future__ import division, absolute_import, print_function
  import sys
  import os
  import warnings
  from .None import numeric
  from .None import numerictypes
  from numpy.compat import isfileobj, bytes, long, unicode, os_fspath
  from numpy.core.overrides import set_module
  from .arrayprint import get_printoptions
label_desc: Use image node_id 2 for calling a global function with example usage: fromarrays(arrayList, dtype, shape, formats, names, titles, aligned, byteorder) and returns: _array