code: def _identify_iterable(core):
      
      if isinstance(core, numpy.ndarray) and not core.shape:
          return {(0,):core}, 1, (), core.dtype
  
      core = [chaospy.poly.base.Poly(a) for a in core]
      shape = (len(core),) + core[0].shape
  
      dtype = chaospy.poly.typing.dtyping(*[_.dtype for _ in core])
  
      dims = numpy.array([a.dim for a in core])
      dim = numpy.max(dims)
      if dim != numpy.min(dims):
          core = [chaospy.poly.dimension.setdim(a, dim) for a in core]
  
      out = {}
      for idx, core_ in enumerate(core):
  
          for key in core_.keys:
  
              if not key in out:
                  out[key] = numpy.zeros(shape, dtype=dtype)
              out[key][idx] = core_.A[key]
  
      return out, dim, shape, dtype
docs: Specification for a list, tuple, numpy.ndarray.