class_docstr: Transform features in parallel as the union of many pipeline steps.
  
  This step is also available with true parallel processing threads or
  processes in the streaming package of Neuraxle.
  
  
  .. code-block:: python
  
      p = Pipeline([
          FeatureUnion([
              Mean(),
              Std(),
          ], joiner=NumpyConcatenateInnerFeatures())
      ])
  
      data_inputs = np.random.randint((1, 20))
  
  .. seealso::
      :class:`ModelStacking`,
      :class:`AddFeatures`,
      :class:`~neuraxle.base.ForceHandleOnlyMixin`,
      :class:`~neuraxle.base.TruncableSteps`,
      :class:`~neuraxle.base.BaseStep`
class_docstr_tok: ["Transform","features","in","parallel","as","the","union","of","many","pipeline","steps",".","This","step","is","also","available","with","true","parallel","processing","threads","or","processes","in","the","streaming","package","of","Neuraxle",".","..","code-block",":",":","python","p","=","Pipeline","(","[","FeatureUnion","(","[","Mean","(",")",",","Std","(",")",",","]",",","joiner=NumpyConcatenateInnerFeatures","(",")",")","]",")","data_inputs","=","np.random.randint","(","(","1",",","20",")",")","..","seealso",":",":",":","class",":","`","ModelStacking","`",",",":","class",":","`","AddFeatures","`",",",":","class",":","`","~neuraxle.base.ForceHandleOnlyMixin","`",",",":","class",":","`","~neuraxle.base.TruncableSteps","`",",",":","class",":","`","~neuraxle.base.BaseStep","`"]
docstr: Transform the data with the unions. It will make use of some parallel processing.
  :param data_container: data container
  :param context: execution context
  :return: the transformed data_inputs.
docstr_tok: ["Transform","the","data","with","the","unions",".","It","will","make","use","of","some","parallel","processing",".",":","param","data_container",":","data","container",":","param","context",":","execution","context",":","return",":","the","transformed","data_inputs","."]
code: def _transform_data_container(self, data_container, context):
      """
      Transform the data with the unions. It will make use of some parallel processing.
      :param data_container: data container
      :param context: execution context
      :return: the transformed data_inputs.
      """
      if self.n_jobs != 1:
          data_containers = Parallel(
              backend=self.backend, n_jobs=self.n_jobs
          )(
              delayed(step.handle_transform)(
                  data_container.copy(), context
              )
              for step in self.body
          )
      else:
          data_containers = [
              step.handle_transform(data_container.copy(), context)
              for step in self.body
          ]
  
      return DACT(
          data_inputs=data_containers,
          ids=data_container.ids,
          expected_outputs=data_container.expected_outputs,
          sub_data_containers=data_container.sub_data_containers,
      )
  
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 3 for calling the FeatureUnion obj's underlying member method code with example usage: obj._transform_data_container(data_container, context) and returns: DACT