code: def cartesian_to_index(ranges, maxima=None):
      
      if maxima is None:
          return reduce(lambda y,x: (x*y[1] + y[0],(np.max(x)+1)*y[1]), ranges[:,::-1].transpose(), (np.array([0]*ranges.shape[0]),1))[0]
      else:
          maxima_prod = np.concatenate([np.cumprod(np.array(maxima)[::-1])[1::-1],[1]])
          return np.sum(ranges * maxima_prod, 1)
docs: Inverts tuples from a cartesian product to a numeric index ie. the index this 
          tuple would have in a cartesian product.
  
          Each column gets multiplied with a place value according to the preceding columns maxmimum
          and all columns are summed up.
  
          This function in the same direction as utils.cartesian, ie. the first column has the largest value.