code: def table(self,x,*args,**kwargs):
          
          reduce_func = kwargs.get('reduce',lambda x: x)
          data = []
          for i,d in enumerate(self.generate(*args)):
              if len(d) > 0:
                  data.append(reduce_func(d[x]))
              else:
                  data.append(0)
          try:
              return np.reshape(data,[len(self.space(a)) for a in args])
          except:
              return np.reshape(data,[-1]+[len(self.space(a)) for a in args])
docs: returns the values of column x
              in an n-dimensional array, each
              dimension being the values from
              a dimension in *args
  
              at the moment very slow due to generate :/