def __init__(self, n_actions, observation_space, bin_size, low_bound=None, high_bound=None, initial_mean=0.0, initial_std=0.0):
    self.n_actions = n_actions
    self._observation_dimension = 1
    for d in observation_space.shape:
        self._observation_dimension *= d
    self._bin_sizes = (bin_size if isinstance(bin_size, list) else ([bin_size] * self._observation_dimension))
    self._dimension_bins = []
    for (i, low, high) in self._low_high_iter(observation_space, low_bound, high_bound):
        b_size = self._bin_sizes[i]
        bins = self._make_bins(low, high, b_size)
        print(bins)
        self._dimension_bins.append(bins)
    self.table = defaultdict((lambda : ((initial_std * np.random.randn(self.n_actions)) + initial_mean)))
def __init__(self, n_actions, observation_space, bin_size, low_bound=None, high_bound=None, initial_mean=0.0, initial_std=0.0):
    self.n_actions = n_actions
    self._observation_dimension = 1
    for d in observation_space.shape:
        self._observation_dimension *= d
    self._bin_sizes = (bin_size if isinstance(bin_size, list) else ([bin_size] * self._observation_dimension))
    self._dimension_bins = []
    for (i, low, high) in self._low_high_iter(observation_space, low_bound, high_bound):
        b_size = self._bin_sizes[i]
        bins = self._make_bins(low, high, b_size)
        print(bins)
        self._dimension_bins.append(bins)
    self.table = defaultdict((lambda : ((initial_std * np.random.randn(self.n_actions)) + initial_mean)))