class_docstr: Operator for merging part of an array into another one
  
  Parameters
  ----------
  axis: None or int or tuple of ints
      the axis (or axes) on which the merge will happen. This axis will be split into 3 parts: the first and last one will take
      value from the first array, the middle one from the second array.
  max_size: None or int
      maximum size of the part taken from the second array. By default, this is at most around half the number of total elements of the
      array to the power of 1/number of axis.
  
  
  Notes
  -----
  - this is experimental, the API may evolve
  - when using several axis, the size of the second array part is the same on each axis (aka a square in 2D, a cube in 3D, ...)
  
  Examples:
  ---------
  - 2-dimensional array, with crossover on dimension 1:
    0 1 0 0
    0 1 0 0
    0 1 0 0
  - 2-dimensional array, with crossover on dimensions 0 and 1:
    0 0 0 0
    0 1 1 0
    0 1 1 0
code: def _layered_recombine(self, *arrays: Data) -> None:  # type: ignore
      root = self.root()
      new_value = self._apply_array(
          [root.value] + [a.value for a in arrays]
      )
      bounds = root.bounds
      if root.parameters["fft"].value and any(
          x is not None for x in bounds
      ):
          new_value = transforms.Clipping(
              a_min=bounds[0], a_max=bounds[1]
          ).forward(new_value)
      root.value = new_value
  
imports: import typing
  import numpy
  from .None import core
  from .None import transforms
  from .data import Data, Scalar
  from .choice import Choice
  from .None import _layering
label_desc: Use image node_id 3 for calling the Crossover obj's underlying member method code with example usage: obj._layered_recombine() without return types