code: def push(self, x):
      x = np.asarray(x)
      # Unvectorized update of the running statistics.
      if x.shape != self.mean_array.shape:
          raise ValueError(
              "Unexpected input shape {}, expected {}, value = {}".format(
                  x.shape, self.mean_array.shape, x
              )
          )
      self.num_pushes += 1
      if self.num_pushes == 1:
          self.mean_array[...] = x
      else:
          delta = x - self.mean_array
          self.mean_array[...] += delta / self.num_pushes
          self.std_array[...] += (
              delta * delta * (self.num_pushes - 1) / self.num_pushes
          )
  
imports: import logging
  import threading
  import numpy
  import tree
  from ray.rllib.utils.annotations import DeveloperAPI
  from ray.rllib.utils.deprecation import Deprecated
  from ray.rllib.utils.numpy import SMALL_NUMBER
  from ray.rllib.utils.typing import TensorStructType
  from ray.rllib.utils.serialization import _serialize_ndarray, _deserialize_ndarray
  from ray.rllib.utils.deprecation import deprecation_warning
label_desc: Use image node_id 3 for calling the RunningStat obj's underlying member method code with example usage: obj.push(x) without return types