一尘不染

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

python

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

给定数据:

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 进行了排序,如果在您的解决方案中数组进行了排序很重要,也请提供信息


阅读 165

收藏
2020-12-20

共1个答案

一尘不染

这是向量化的解决方案:

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]]]
2020-12-20