将多个标准(其中任何一个都有效)传递给数组并返回一个 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 个怎么办?
最佳答案
您可以将所有名称放在一个列表中,然后使用np.in1d
生成掩码
:
mask = np.in1d(names, ['Bob', 'Will'])
mask
# array([ True, False, True, True], dtype=bool)
关于python - boolean 索引的多个标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42380385/