通过多个布尔掩码索引numpy数组

时间:2019-06-22 00:33:17

标签: python arrays numpy boolean-logic

我有一个数组x和一个过滤器列表(布尔数组与x长度相同):

x = np.random.rand(10)
filt1 = x > .2
filt2 = x < .5
filt3 = x % 2 > .02
filters_list = [filt1, filt2, filt3]

我想创建一个过滤器,该过滤器是filters_list中所有过滤器的逻辑与,因此输出应为

output = x[filt1 & filt2 & filt3]

假设filt1 & filt2 & filt3是任意的,如何从filters_list创建过滤器len(filters_list)

1 个答案:

答案 0 :(得分:0)

您可以对轴和过滤器列表使用numpy.all()

x = np.arange(10)
filt1 = x > 2
filt2 = x < 9
filt3 = (x % 2) == 1
filters_list = np.all([filt1, filt2, filt3], axis=0)
x[filters_list]

#array([3, 5, 7])