我正在使用python并尝试过滤2d数组,只包含具有一定总和且不包含元素0的数组。
其他教程似乎展示了如何使用numpy.where来过滤数组以获取满足条件的某些元素,但我试图只获得满足条件的某些数组而不使用循环,当然,而是numpy方法。
喜欢这个操作,但有数组和numpy:
import itertools
list_o_tuples = list(filter(lambda x: sum(x)==10 and 0 not in x,
itertools.combinations(range(10),3)))
#returns [(1, 2, 7), (1, 3, 6), (1, 4, 5), (2, 3, 5)]
答案 0 :(得分:2)
我认为这就是你想要的:
test = np.array(list(itertools.combinations(range(10),3)))
mask = (test.sum(axis=1) == 10) & (test.all(axis=1))
test[mask]
为了提高安全性/可读性,您可能希望使用(test != 0).all(axis=1)
代替test.all(axis=1)
。