class_docstr: A Ornstein Uhlenbeck action noise, this is designed to approximate brownian motion with friction.
  
  Based on http://math.stackexchange.com/questions/1287634/implementing-ornstein-uhlenbeck-in-matlab
  
  :param mean: (float) the mean of the noise
  :param sigma: (float) the scale of the noise
  :param theta: (float) the rate of mean reversion
  :param dt: (float) the timestep for the noise
  :param initial_noise: ([float]) the initial value for the noise output, (if None: 0)
class_docstr_tok: ["A","Ornstein","Uhlenbeck","action","noise",",","this","is","designed","to","approximate","brownian","motion","with","friction",".","Based","on","http",":","\/\/math.stackexchange.com\/questions\/1287634\/implementing-ornstein-uhlenbeck-in-matlab",":","param","mean",":","(","float",")","the","mean","of","the","noise",":","param","sigma",":","(","float",")","the","scale","of","the","noise",":","param","theta",":","(","float",")","the","rate","of","mean","reversion",":","param","dt",":","(","float",")","the","timestep","for","the","noise",":","param","initial_noise",":","(","[","float","]",")","the","initial","value","for","the","noise","output",",","(","if","None",":","0",")"]
code: def __call__(self) -> np.ndarray:
      noise = (
          self.noise_prev
          + self._theta * (self._mu - self.noise_prev) * self._dt
          + self._sigma
          * np.sqrt(self._dt)
          * np.random.normal(size=self._mu.shape)
      )
      self.noise_prev = noise
      return noise
  
imports: from abc import ABC, abstractmethod
  import numpy
label_desc: Use image node_id 2 for calling the OrnsteinUhlenbeckActionNoise obj's underlying member method code with example usage: obj.__call__() and returns: noise