class_docstr: Abstract base class for normalization strategies.
  
  Provides functionality for:
      - normalizing gym.Box observations as well as for normalizing the originally defined observation space.
      - setting and getting the currently employed normalization statistics.
      - interface definition for estimating the normalization statistics from a list of observations
      - interface definition for normalizing a given gym.Box (np.ndarray) observation
  
  :param observation_space: The observations space to be normalized.
  :param clip_range: The minimum and maximum value allowed for an observation.
  :param axis: Defines the axis along which to compute normalization statistics
class_docstr_tok: ["Abstract","base","class","for","normalization","strategies",".","Provides","functionality","for",":","-","normalizing","gym.Box","observations","as","well","as","for","normalizing","the","originally","defined","observation","space",".","-","setting","and","getting","the","currently","employed","normalization","statistics",".","-","interface","definition","for","estimating","the","normalization","statistics","from","a","list","of","observations","-","interface","definition","for","normalizing","a","given","gym.Box","(","np.ndarray",")","observation",":","param","observation_space",":","The","observations","space","to","be","normalized",".",":","param","clip_range",":","The","minimum","and","maximum","value","allowed","for","an","observation",".",":","param","axis",":","Defines","the","axis","along","which","to","compute","normalization","statistics"]
code: def __init__(
      self,
      observation_space: gym.spaces.Box,
      clip_range: Tuple[Number, Number],
      axis: Optional[Union[int, Tuple[int], List[int]]],
  ):
      assert isinstance(observation_space, gym.spaces.Box)
      self._original_observation_space = copy.deepcopy(
          observation_space
      )
      self._statistics: Optional[StatisticsType] = None
      self._axis = axis
      # Convert to tuple, since yaml only reads lists
      if isinstance(self._axis, Iterable):
          self._axis = tuple(self._axis)
  
      # set allowed value ranges
      self._clip_min = clip_range[0]
      self._clip_max = clip_range[1]
  
file_path: maze/maze/core/wrappers/observation_normalization/normalization_strategies/base.py
imports: import copy
  from abc import ABC, abstractmethod
  from typing import Dict, List, Union, Iterable, Tuple, Optional
  import gym
  import numpy
label_desc: Use image node_id 1 to create a new ObservationNormalizationStrategy object from inherited base classes: ABC with example: obj = ObservationNormalizationStrategy(observation_space, clip_range, axis)