numpy数组满足条件的组合

时间:2016-04-18 04:33:14

标签: python-3.x numpy

我正在尝试生成满足条件的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)  

1 个答案:

答案 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)