class_docstr: Normalizes elements of type Raster.
  
  For Raster elements containing (NxM) data, this will normalize the
  array/matrix into the specified range if value_dimension matches
  a key in the ranges dictionary.
  
  For elements containing (NxMxD) data, the (NxM) components of the
  third dimensional are normalized independently if the
  corresponding value dimensions are selected by the ranges
  dictionary.
class_docstr_tok: ["Normalizes","elements","of","type","Raster",".","For","Raster","elements","containing","(","NxM",")","data",",","this","will","normalize","the","array\/matrix","into","the","specified","range","if","value_dimension","matches","a","key","in","the","ranges","dictionary",".","For","elements","containing","(","NxMxD",")","data",",","the","(","NxM",")","components","of","the","third","dimensional","are","normalized","independently","if","the","corresponding","value","dimensions","are","selected","by","the","ranges","dictionary","."]
code: def _process(self, raster, key=None):
      if isinstance(raster, Raster):
          return self._normalize_raster(raster, key)
      elif isinstance(raster, Overlay):
          overlay_clone = raster.clone(shared_data=False)
          for k, el in raster.items():
              overlay_clone[k] = self._normalize_raster(el, key)
          return overlay_clone
      else:
          raise ValueError(
              "Input element must be a Raster or subclass of Raster."
          )
  
file_path: holoviews/holoviews/operation/normalization.py
imports: import param
  from ..core import Overlay
  from ..core.operation import Operation
  from ..core.util import match_spec
  from ..element import Raster
label_desc: Use image node_id 1 for calling the raster_normalization obj's underlying member method code with example usage: obj._process(raster, key) and returns: self, overlay_clone