使用数组操作过滤numpy

时间:2018-01-09 03:43:37

标签: python arrays numpy combinations itertools

我正在使用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)]

1 个答案:

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