code: def _init_data(data, allow_empty, default_name):
      
      assert (data is not None) or allow_empty
      if data is None:
          data = []
  
      if isinstance(data, (np.ndarray, NDArray)):
          data = [data]
      if isinstance(data, list):
          if not allow_empty:
              assert(len(data) > 0)
          if len(data) == 1:
              data = OrderedDict([(default_name, data[0])])
          else:
              data = OrderedDict([('_%d_%s' % (i, default_name), d) for i, d in enumerate(data)])
      if not isinstance(data, dict):
          raise TypeError("Input must be NDArray, numpy.ndarray, " + \
                  "a list of them or dict with them as values")
      for k, v in data.items():
          if isinstance(v, NDArray):
              data[k] = v.asnumpy()
      for k, v in data.items():
          if not isinstance(v, np.ndarray):
              raise TypeError(("Invalid type '%s' for %s, "  % (type(v), k)) + \
                      "should be NDArray or numpy.ndarray")
      return list(data.items())
docs: Convert data into canonical form.