code: def __init__(
      self,
      centers_old=None,
      centers_new=None,
      center_shift=None,
      lower_bounds=None,
      upper_bounds=None,
      labels=None,
      weight_in_clusters=None,
      output_types=None,
      **kw,
  ):
      super().__init__(
          _centers_old=centers_old,
          _centers_new=centers_new,
          _center_shift=center_shift,
          _lower_bounds=lower_bounds,
          _upper_bounds=upper_bounds,
          _labels=labels,
          _weight_in_clusters=weight_in_clusters,
          _output_types=output_types,
          **kw,
      )
      if self._output_types is None:
          self._output_types = [OutputType.tensor] * self.output_limit
  
imports: import numpy
  from ...None import opcodes
  from ...core import OutputType, recursive_tile
  from ...core.operand import OperandStage
  from ...serialization.serializables import KeyField, Int32Field, BoolField
  from ...tensor.array_utils import as_same_device, device, cp, sparse
  from ...tensor.core import TensorOrder
  from ...utils import has_unknown_shape
  from ..operands import LearnOperand, LearnOperandMixin
  from ._k_means_common import _execute_merge_update, _relocate_empty_clusters
  from ._k_means_elkan import init_bounds_dense, init_bounds_sparse, update_chunk_dense, update_chunk_sparse
  from ._k_means_fast import update_center, update_upper_lower_bounds
label_desc: Use image node_id 1 to create a new KMeansElkanPostprocess object from inherited base classes: LearnOperand, LearnOperandMixin with example: obj = KMeansElkanPostprocess(centers_old, centers_new, center_shift, lower_bounds, upper_bounds, labels, weight_in_clusters, output_types)