class_docstr: Multiple proximal operator. This allows to apply sequentially a list
  of proximal operators. This is convenient when one wants to apply different
  proximal operators on different parts of a vector.
  
  Parameters
  ----------
  proxs : `tuple` of `Prox`
      A tuple of prox operators to be applied successively.
  
  Attributes
  ----------
  dtype : `{'float64', 'float32'}`
      Type of the arrays used.
code: def __init__(self, proxs: tuple):
      Prox.__init__(self, None)
      if not proxs:
          proxs = [ProxZero()]
      dtype = proxs[0].dtype
      self.dtype = dtype
      for prox in proxs:
          if not isinstance(prox, Prox):
              raise ValueError(
                  "%s is not a Prox" % prox.__class__.__name__
              )
          if not hasattr(prox, "_prox"):
              raise ValueError(
                  "%s cannot be used in ProxMulti" % prox.name
              )
          if prox._prox is None:
              raise ValueError(
                  "%s cannot be used in ProxMulti" % prox.name
              )
          if dtype != prox.dtype:
              raise ValueError(
                  "ProxMulti can only handle proxes with same dtype"
              )
  
      # strength of ProxMulti is 0., since it's not used
      self.proxs = [prox._prox for prox in proxs]
      self._prox = self._build_cpp_prox(dtype)
  
file_path: tick/tick/prox/prox_multi.py
imports: import numpy
  from .base import Prox
  from .build.prox import ProxMultiDouble
  from .build.prox import ProxMultiFloat
  from tick.prox import ProxZero
label_desc: Use image node_id 1 to create a new ProxMulti object from inherited base classes: Prox with example: obj = ProxMulti(proxs)