class_docstr: Normalizes observations to have zero mean and standard deviation one.
  
  The strategy first subtracts the observation mean followed by a division with the standard deviation.
  Depending on the original distribution of the input observations this yields a standard Normal.
docstr: Implementation of
  :class:`~maze.core.wrappers.observation_normalization.normalization_strategies.base.ObservationNormalizationStrategy`
  interface.
docstr_tok: ["Implementation","of",":","class",":","`","~maze.core.wrappers.observation_normalization.normalization_strategies.base.ObservationNormalizationStrategy","`","interface","."]
code: def normalize_value(self, value: np.ndarray) -> np.ndarray:
      """Implementation of
      :class:`~maze.core.wrappers.observation_normalization.normalization_strategies.base.ObservationNormalizationStrategy`
      interface.
      """
  
      # check if nan save division is required
      if np.max(np.abs(value)) == np.finfo(np.float32).max:
          # divide by masked broadcasting
          mask = (value != np.finfo(np.float32).min) & (
              value != np.finfo(np.float32).max
          )
          mean = np.broadcast_to(self._statistics["mean"], value.shape)
          std = np.broadcast_to(self._statistics["std"], value.shape)
  
          value[mask] -= mean[mask]
          value[mask] /= std[mask]
  
      else:
          value = (value - self._statistics["mean"]) / self._statistics[
              "std"
          ]
  
      return value
  
file_path: maze/maze/core/wrappers/observation_normalization/normalization_strategies/mean_zero_std_one.py
imports: from typing import List
  import numpy
  from maze.core.annotations import override
  from maze.core.wrappers.observation_normalization.normalization_strategies.base import ObservationNormalizationStrategy, StatisticsType
label_desc: Use image node_id 2 for calling the MeanZeroStdOneObservationNormalizationStrategy obj's underlying member method code with example usage: obj.normalize_value(value) and returns: value