将多个条件(其中任何一个是有效的)传递给数组并返回布尔索引然后可以用作过滤器的最佳方法是什么?可用的解决方案遵循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个怎么办?
答案 0 :(得分:2)
您可以将所有名称放在列表中,然后使用np.in1d
生成mask
:
mask = np.in1d(names, ['Bob', 'Will'])
mask
# array([ True, False, True, True], dtype=bool)