布尔索引的多准则

2024-04-25 09:57:24 发布

您现在位置:Python中文网/ 问答频道 /正文

将多个条件(其中任何一个都有效)传递给数组并返回布尔索引(然后才能用作过滤器)的最佳方法是什么?可用的解决方案遵循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个呢?在


Tags: 方法框架过滤器dataifnamesnpmask
1条回答
网友
1楼 · 发布于 2024-04-25 09:57:24

您可以将所有名称放入一个列表中,然后使用np.in1d生成{}:

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

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

相关问题 更多 >