python - 获取 bool 数组,指示数组中哪些元素属于列表

标签 python arrays list numpy

这似乎是一个简单的问题,但我在很长一段时间内都在为错误而苦苦挣扎。
想象一个数组

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

我想测试数组中的哪些元素属于另一个列表
[2,3,6]

如果我做
a in [2,3,6]

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

作为返回,我想得到一个类似 bool 数组的
array([ True,  True, False, False,  True], dtype=bool)

最佳答案

使用 np.isin 创建一个 bool 掩码,然后使用 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]])

关于python - 获取 bool 数组,指示数组中哪些元素属于列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62370500/

相关文章:

python - python 中定义中的类和字符串

python - 找到最短距离,同时只访问每个节点一次

c - 内存错误 - C 中的简单 XOR 加密

c - Qsort 按字母顺序排列的字符串数组

Windows 批处理文件 - 显示所有文件夹和子文件夹的相对路径

python - 根据元素位置从另一列中提取某些元素

android - 从数据库中获取数据时如何对列表中的行进行分组并给出标题

python - 如何在 pymongo 中检查该项目不在列表字段中?

python - 你如何阅读Python文档

ruby - 如何从数组中删除一系列值?