code: def _reduce_nsplit_by_expand(splits, expand):
      assert sum(splits) % expand == 0
  
      out = []
      residual = 0
      for chunk in splits:
          chunk += residual
          div = chunk // expand
          residual = chunk % expand
          good = expand * div
          if good:
              out.append(good)
      return tuple(out)
  
imports: import itertools
  import logging
  import numpy
  from ...None import opcodes
  from ...core import recursive_tile
  from ...core.operand import OperandStage
  from ...serialization.serializables import FieldTypes, KeyField, TupleField, StringField
  from ...utils import has_unknown_shape
  from ..array_utils import as_same_device, device
  from ..datasource import tensor
  from ..operands import TensorOperandMixin, TensorMapReduceOperand, TensorShuffleProxy
  from ..utils import get_order, decide_chunk_sizes
label_desc: Use image node_id 14 for calling the TensorReshape obj's underlying member method code with example usage: obj._reduce_nsplit_by_expand(splits, expand) and returns: tuple