检查不同的numpy数组中的相同行

发布于 2021-01-29 19:14:54

我如何获得两个数组之间的按行比较,从而得到按行的真/假数组?

给定数据:

a = np.array([[1,0],[2,0],[3,1],[4,2]])
b = np.array([[1,0],[2,0],[4,2]])

结果步骤1:

c = np.array([True, True,False,True])

最终结果:

a = a[c]

那么我如何获得阵列呢c

PS:在此示例中,数组ab 进行了排序,如果在您的解决方案中数组进行了排序很重要,也请提供信息

关注者
0
被浏览
42
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是向量化的解决方案:

    res = (a[:, None] == b).all(-1).any(-1)
    
    print(res)
    
    array([ True,  True, False,  True])
    

    请注意,a[:, None] == b将的每行a与按b元素进行比较。然后,我们使用all+any推断True每个子数组是否有所有行:

    print(a[:, None] == b)
    
    [[[ True  True]
      [False  True]
      [False False]]
    
     [[False  True]
      [ True  True]
      [False False]]
    
     [[False False]
      [False False]
      [False False]]
    
     [[False False]
      [False False]
      [ True  True]]]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看