'Two kinds of valid input:
Box(-1.0, 1.0, (3,4)) # low and high are scalars, and shape is provided
Box(np.array([-1.0,-2.0]), np.array([2.0,4.0])) # low and high are arrays of the same shape'

def __init__(self, low, high, shape=None):

    if (shape is None):
        assert (low.shape == high.shape)
        self.low = low
        self.high = high
    else:
        assert (np.isscalar(low) and np.isscalar(high))
        self.low = (low + np.zeros(shape))
        self.high = (high + np.zeros(shape))
