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

Index numpy array by multiple boolean masks [duplicate]

提问人:Nic 提问时间:6/22/2019 最后编辑:user3483203Nic 更新时间:6/22/2019 访问量:733

问:

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

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

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

output = x[filt1 & filt2 & filt3]

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

python 数组 numpy boolean-logic

评论

1赞 hpaulj 6/22/2019
np.logical_and

答:

0赞 Mark 6/22/2019 #1

您可以将 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])