class_docstr: WARNING: Unexpected behaviour from this class. It's not to date.
  
  Concatenate outer batch of sub data containers along `axis=0`..
  
  Code example:
  
  .. code-block:: python
  
      data_container = DataContainer(data_inputs=data_inputs_3d, expected_outputs=expected_outputs_3d)
      data_container.add_sub_data_container(name='1d_data_source', data_container=data_container_1d)
      data_container.add_sub_data_container(name='2d_data_source', data_container=data_container_2d)
  
      # data container with sub data containers :
      # DataContainer(data_inputs=data_inputs_3d, expected_outputs=expected_outputs, sub_data_containers=[('1d_data_source', data_container_1d), ('2d_data_source', data_container_2d)])
  
      p = Pipeline([
          ZipBatchDataContainer()
          # is equivalent to ZipBatchDataContainer(sub_data_container_names=['2d_data_source'])
      ])
  
      data_container = p.handle_transform(data_container, ExecutionContext())
  
      # new_shape: (batch_size, ((time_steps, n_features_3d), n_features_2d))
  
  
  .. seealso::
      :class:`~neuraxle.base.NonTransformableMixin`,
      :class:`~neuraxle.base.BaseStep`
      :class:`~neuraxle.data_container.DataContainer`
class_docstr_tok: ["WARNING",":","Unexpected","behaviour","from","this","class",".","It","'s","not","to","date",".","Concatenate","outer","batch","of","sub","data","containers","along","`","axis=0","`","..","Code","example",":","..","code-block",":",":","python","data_container","=","DataContainer","(","data_inputs=data_inputs_3d",",","expected_outputs=expected_outputs_3d",")","data_container.add_sub_data_container","(","name='1d_data_source","'",",","data_container=data_container_1d",")","data_container.add_sub_data_container","(","name='2d_data_source","'",",","data_container=data_container_2d",")","#","data","container","with","sub","data","containers",":","#","DataContainer","(","data_inputs=data_inputs_3d",",","expected_outputs=expected_outputs",",","sub_data_containers=","[","(","'1d_data_source","'",",","data_container_1d",")",",","(","'2d_data_source","'",",","data_container_2d",")","]",")","p","=","Pipeline","(","[","ZipBatchDataContainer","(",")","#","is","equivalent","to","ZipBatchDataContainer","(","sub_data_container_names=","[","'2d_data_source","'","]",")","]",")","data_container","=","p.handle_transform","(","data_container",",","ExecutionContext","(",")",")","#","new_shape",":","(","batch_size",",","(","(","time_steps",",","n_features_3d",")",",","n_features_2d",")",")","..","seealso",":",":",":","class",":","`","~neuraxle.base.NonTransformableMixin","`",",",":","class",":","`","~neuraxle.base.BaseStep","`",":","class",":","`","~neuraxle.data_container.DataContainer","`"]
code: def __init__(self, sub_data_container_names=None):
      BaseTransformer.__init__(self)
      ForceHandleOnlyMixin.__init__(self)
  
      self.data_sources = sub_data_container_names
  
imports: import random
  from operator import attrgetter
  from typing import Iterable, List, Tuple
  from neuraxle.base import BaseStep, BaseTransformer
  from neuraxle.base import ExecutionContext
  from neuraxle.base import ForceHandleOnlyMixin, MetaStep
  from neuraxle.data_container import DACT, _inner_concatenate_np_array
  from neuraxle.pipeline import Pipeline
  from neuraxle.steps.flow import TrainOnlyWrapper
  from neuraxle.steps.output_handlers import IdsAndInputAndOutputTransformerMixin
label_desc: Use image node_id 1 to create a new ZipBatchDataContainer object from inherited base classes: ForceHandleOnlyMixin, BaseTransformer with example: obj = ZipBatchDataContainer(sub_data_container_names)