我正在尝试生成满足条件的numpy数组的所有组合,我的代码现在看起来像这样
import numpy as np
import itertools
a = np.array([1,11,12,13])
a = np.tile(a,(13,1))
a = a.flatten()
for c in itertools.combinations(a,4):
if np.sum(c)==21:
print(c)
答案 0 :(得分:0)
如果你只关心独特的组合(并且只有256个),你可以使用itertools.product:
version_1 = np.vstack(list(sorted({tuple(row) for row in list(itertools.combinations(a, 4))}))) # unique combinations, your way
version_2 = np.array(list(itertools.product((1, 11, 12, 13), repeat=4))) # same result, but faster
assert (version_1 == version_2).all()
我正在使用this answer来获取Numpy数组的唯一元素。
所以最终的答案是:
import itertools, numpy as np
a = np.array(list(itertools.product((1, 11, 12, 13), repeat=4)))
for arr in a[a.sum(axis=1) == 21]:
print(arr)