首页 > 解决方案 > 获取布尔数组,指示数组中哪些元素属于列表

问题描述

这似乎是一个简单的问题,但我很长一段时间以来一直在努力解决错误。想象一个数组

a = np.array([2,3,4,5,6])

我想测试数组中的哪些元素属于另一个列表

[2,3,6]

如果我做

a in [2,3,6]

Python 引发“ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()”

作为回报,我想得到一个类似布尔数组

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

标签: pythonarrayslistnumpy

解决方案


用于np.isin创建布尔掩码,然后np.argwhere在此掩码上使用以查找非零数组元素的索引:

m = np.isin(a, lst)
indices = np.argwhere(m)

# print(m)
array([ True,  True, False, False,  True])

# print(indices)
array([[0], [1], [4]])

推荐阅读