代码之家  ›  专栏  ›  技术社区  ›  West

在python中使用numpy生成范围内所有可能的组合

  •  0
  • West  · 技术社区  · 6 年前

    我正在寻找一种有效的方法,使用numpy或任何更快的方法,在一定的大范围内生成所有可能的组合。我试过:

    from numpy import *
    from itertools import *
    
    dt=dtype('i,i,i,i,i,i')
    fromiter(combinations(range(10000000),6), dtype=dt, count=-1)
    

    但我有一个内存错误,即使它起作用,也可能要花很长时间才能完成。我正在寻找不重复的组合。例如,如果我需要范围(1,5)中的所有3个数字组合,我将得到(1,2,3),(1,2,4),(1,3,4),(2,3,4)。

    1 回复  |  直到 6 年前
        1
  •  5
  •   TwistedSim    6 年前

    大约有10000000000000000000000000000000000000000000000000000 (1千9百万)在您使用的范围内,6种元素的可能组合。你永远不会把它们都处理掉。您最好使用迭代器以“惰性方式”处理它们:

    for c in combinations(range(10000000),6):
        print(c)