n dimensional grid in Python / numpy

前端 未结 5 703
忘掉有多难
忘掉有多难 2021-01-23 06:57

I have an unknown number n of variables that can range from 0 to 1 with some known step s, with the condition that they sum up to 1. I want to create a

5条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-23 07:30

    Assuming that they always add up to 1, as you said:

    import itertools
    
    def make_grid(n):   
      # setup all possible values in one position
      p = [(float(1)/n)*i for i in range(n+1)]
    
      # combine values, filter by sum()==1
      return [x for x in itertools.product(p, repeat=n) if sum(x) == 1]
    
    print(make_grid(n=3))
    
    #[(0.0, 0.0, 1.0),
    # (0.0, 0.3333333333333333, 0.6666666666666666),
    # (0.0, 0.6666666666666666, 0.3333333333333333),
    # (0.0, 1.0, 0.0),
    # (0.3333333333333333, 0.0, 0.6666666666666666),
    # (0.3333333333333333, 0.3333333333333333, 0.3333333333333333),
    # (0.3333333333333333, 0.6666666666666666, 0.0),
    # (0.6666666666666666, 0.0, 0.3333333333333333),
    # (0.6666666666666666, 0.3333333333333333, 0.0),
    # (1.0, 0.0, 0.0)]
    

提交回复
热议问题