相关疑难解决方法(0)

Numpy:从给定范围生成组合的有效方法

我有一个n维数组,如下所示:

np.array([[0,3],[0,3],[0,10]])
Run Code Online (Sandbox Code Playgroud)

在此数组中,元素表示低值和高值.例如:[0,3][0,1,2,3]

我需要使用上面给出的范围生成所有值的组合.例如,我想要[0,0,0], [0,0,1] ... [0,1,0] ... [3,3,10]

我尝试过以下方法来获得我想要的东西:

ds = np.array([[0,3],[0,3],[0,10]])
nItems = int(reduce(lambda a,b: a * (b[1] - b[0] + 1), ds, 1))
myCombinations = np.zeros((nItems,))
nArrays = []
for x in range(ds.shape[0]):
    low = ds[x][0]
    high= ds[x][1]
    nitm = high - low + 1
    ar = [x+low for x in range(nitm) ]
    nArrays.append(ar)

myCombinations = cartesian(nArrays)
Run Code Online (Sandbox Code Playgroud)

笛卡尔函数取自于使用numpy来构建两个数组的所有组合的数组

我需要做几百万次.

我的问题:有没有更好/更有效的方法来做到这一点?

python arrays combinations numpy

1
推荐指数
1
解决办法
3176
查看次数

标签 统计

arrays ×1

combinations ×1

numpy ×1

python ×1