code: def __init__(self, data, label=None, batch_size=1, shuffle=False):
      # Always pass a tuple, so that the impl's built-in iterator returns a
      # tuple.
      self.data_slices = (data, label) if label is not None else (data,)
      self.batch_size = batch_size
      self.batch_idx = 0
      self.num_batches = int(_ceil(len(data) / float(self.batch_size)))
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import logging
  from math import ceil
  import numpy
  import six
  import turicreate
  import turicreate.toolkits._internal_utils
  from turicreate.toolkits._main import ToolkitError
  from turicreate.toolkits._model import CustomModel
  from turicreate.toolkits._model import PythonProxy
  from turicreate.toolkits import _coreml_utils
  from turicreate._deps.minimal_package import _minimal_package_import_check
label_desc: Use image node_id 1 to create a new _NumPyDataIterator object from inherited base classes: _DataIterator with example: obj = _NumPyDataIterator(data, label, batch_size, shuffle)