class_docstr: Sub class of DataContainer to zip two data sources together.
  
  .. seealso::
      :class: `DataContainer`
class_docstr_tok: ["Sub","class","of","DataContainer","to","zip","two","data","sources","together",".","..","seealso",":",":",":","class",":","`","DataContainer","`"]
docstr: Concatenate inner features from zipped data inputs.
  Assumes each data_input entry is an iterable of numpy arrays.
docstr_tok: ["Concatenate","inner","features","from","zipped","data","inputs",".","Assumes","each","data_input","entry","is","an","iterable","of","numpy","arrays","."]
code: def concatenate_inner_features(self):
      """
      Concatenate inner features from zipped data inputs.
      Assumes each data_input entry is an iterable of numpy arrays.
      """
      new_data_inputs = [di[0] for di in self.di]
  
      for i, data_input in enumerate(self.di):
          new_data_inputs[i] = _inner_concatenate_np_array(
              list(data_input)
          )
  
      self.set_data_inputs(new_data_inputs)
  
imports: import copy
  import math
  from operator import attrgetter
  from typing import Any, Callable, Generic, Iterable, Iterator, List, Optional, Tuple, TypeVar, Union
  import numpy
  import pandas
label_desc: Use image node_id 2 for calling the ZipDataContainer obj's underlying member method code with example usage: obj.concatenate_inner_features() without return types