numpy 创建包含所有可能的元素组合的数字数组

olhwl3o2  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(151)

我想创建一个Numpy数组,它由所有可能的组合组成。我有一些样本,它们可能有一组可能的值。目前我使用递归,但我正在寻找更快的方法来工作与大量的组合。可能的组合数量为(n个值)^个样本

import numpy as np
import itertools 

samples=3
range1=range(1) 
range2=range(20,101,10)
a=np.zeros((samples))
total=np.empty((0,samples))
limit=1000
def nested(samples,limit):
    if samples>0:
        for j in itertools.chain(range1, range2):
            a[samples-1]=j
            global total
            total=np.vstack((total,a))
            nested(samples-1,limit)

nested(samples, limit)
total=np.unique(total, axis=0)
print(total.shape)

在目前应用的递归方法中,构建一个有1M+个组合的数组需要花费大量的时间。

zpgglvta

zpgglvta1#

您可以使用itertools.product()执行以下操作:

samples = 3
values = list(itertools.chain(range1, range2)) # all iterables
total = [list(item) for item in itertools.product(*[values for _ in range(samples)])]

相关问题