Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取指示数组中哪些元素属于列表的布尔数组_Python_Arrays_List_Numpy - Fatal编程技术网

Python 获取指示数组中哪些元素属于列表的布尔数组

Python 获取指示数组中哪些元素属于列表的布尔数组,python,arrays,list,numpy,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() 作为回报,我想得到一个布尔数组,如 array([ True, True, False, False, True], dtype=bool) 用于创建布尔掩码,然后在

这似乎是一个简单的问题,但我一直在与错误作斗争。 想象一个数组

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)
用于创建布尔掩码,然后在此掩码上使用以查找非零数组元素的索引:

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

我使用了简单的列表理解逻辑来实现这一点

输出:

[True,True,False,False,True]

请举例说明您的输出应该是什么样的,包括输出应该是什么数据类型(例如,它是列表还是numpy数组?)还请说明
a
是否始终是一维的,或者它是否可以有更多的维度,然后在这种情况下包括一个输出示例。目前有两个答案,一个产生
数组([[0],[1],[4]])
,另一个产生
[0,1,4]
,由于没有说明要求,因此不可能知道哪一个更合适。这就是为什么这个问题必须说明需要什么样的输出。嗨@alaniwi,谢谢你的评论。作为回报,我更喜欢boolena阵列。e、 g.[True,True,False,False,True]。感谢您添加返回类型。我建议对问题进行编辑,删除关于“索引…”的部分,因为这意味着您需要与列表上的位置相关的整数,这与您所说的需要布尔数组相矛盾。无论如何,您将看到其中一个答案生成了您想要的布尔数组,作为计算索引数组的中介。感谢@alaniwi改进了这个问题。我已批准编辑。
import numpy as np

arr1 = np.array([2,3,4,5,6])
arr2 = np.array([2,3,6])
arr_result = [bool(a1 in arr2) for a1 in arr1]
print(arr_result)
[True,True,False,False,True]