code: def _expand_nsplit_by_reduce(splits, reduced):
      if reduced == 1:
          return splits
  
      out = []
      for s in splits:
          x = s
          part = max(x / reduced, 1)
          while x >= 2 * part:
              out.append(int(part))
              x -= int(part)
          if x:
              out.append(x)
      assert sum(splits) == sum(out)
      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 13 for calling the TensorReshape obj's underlying member method code with example usage: obj._expand_nsplit_by_reduce(splits, reduced) and returns: tuple, splits