python - 两个数组之间的逐元素内运算符

标签 python pandas numpy

我想知道是否有一种很好且优雅的方法来在两个数组之间进行逐元素比较。

arr1 = [[1, 2], 
        [3, 4], 
        [5, 6]]

àrr2 = [3,
        5, 
        6]

result = arr2 in arr1

现在我想要一个像这样的结果:

[False, False, True]

提前非常感谢!

编辑:抱歉,我的示例有点误导。我希望按元素执行此操作,这意味着我想检查 arr2[0] 是否在 arr1[0] 中,arr2[1] 是否在 arr2[1] 中,依此类推。我更新了示例

而且真正的数组要大得多,所以我想在没有循环的情况下完成

最佳答案

您可以使用operator.contains:

>>> arr1 = [[1, 2], [4, 5], [7, 8]]
>>> arr2 = [3, 4, 7]
>>> list(map(contains, arr1, arr2)
[False, True, True]

或者对于numpy使用np.isin

>>> arr1 = np.array([[1, 2], [4, 5], [7, 8]])
>>> arr2 = np.array([3, 4, 7])
>>> np.isin(arr2, arr1).any(1)
[False  True  True]

关于python - 两个数组之间的逐元素内运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919800/

相关文章:

python - 模拟 : assert mock_calls with a numpy array as argument raises ValueError and np. testing.assert_array_equal 不起作用

python - findall() 返回一个列表,但它不会添加列表中的元素

python - 忽略 NaN 的 Pandas 聚合

python - (Django) MySQL外键级联是否先删除父项或子项

python - 来自 df 的 Pandas 样本保持群体平衡

python - Pandas - 计算其他列中每种值类型的值频率

python - np.linalg.norm(a-b) 和 np.sqrt(np.sum(np.square(a-b))) 之间的区别?

python - 如何重复移动和填充列表中的元素以获得列表列表?

python - MyPy/python 类型提示不会捕获可以返回多种类型的被调用函数

python - 有效地将不均匀的列表列表转换为用 nan 填充的最小包含数组