class_docstr: This class receives an iterable of DataContainer and zips their feature together.
  If concatenate_inner_features is True, then features are concatenated after being zipped.
class_docstr_tok: ["This","class","receives","an","iterable","of","DataContainer","and","zips","their","feature","together",".","If","concatenate_inner_features","is","True",",","then","features","are","concatenated","after","being","zipped","."]
code: def __init__(self, concatenate_inner_features=False):
      BaseStep.__init__(self)
      NonFittableMixin.__init__(self)
      self.concatenate_inner_features = concatenate_inner_features
  
imports: from typing import Tuple
  from joblib import Parallel, delayed
  from neuraxle.base import CX, DACT, BaseStep, BaseTransformer, ForceHandleOnlyMixin, Identity, NamedStepsList, NonFittableMixin, TruncableSteps, _TruncableServiceWithBodyMixin
  from neuraxle.data_container import ZipDataContainer
  from neuraxle.steps.numpy import NumpyConcatenateInnerFeatures
label_desc: Use image node_id 1 to create a new ZipFeatures object from inherited base classes: NonFittableMixin, BaseStep with example: obj = ZipFeatures(concatenate_inner_features)