布尔索引的多个标准

时间:2017-02-22 00:10:46

标签: python filter boolean

将多个条件(其中任何一个是有效的)传递给数组并返回布尔索引然后可以用作过滤器的最佳方法是什么?可用的解决方案遵循if,then框架,这比我需要的更多。

我知道我可以执行以下操作:

In[1]: 
names = np.array(['Bob','Joe','Bob','Will'])
data = np.random.randn(4,4)
mask = (names=='Bob')|(names=='Will')
data[mask]

Out[1]: 
array([[-0.25883247, -0.06236544, -0.02296274,  1.36340923],
       [ 0.3907503 , -2.38917418, -0.49057852, -0.25427256],
       [ 0.02648891, -1.27278901, -0.31815915,  1.72876199]])

但是,如果我有100个名字要测试而不是2个怎么办?

1 个答案:

答案 0 :(得分:2)

您可以将所有名称放在列表中,然后使用np.in1d生成mask

mask = np.in1d(names, ['Bob', 'Will'])

mask
# array([ True, False,  True,  True], dtype=bool)