我如何获得两个数组之间的按行比较,从而得到按行的真/假数组?
给定数据:
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 ?
c
PS:在此示例中,数组a和b 进行了排序,如果在您的解决方案中数组进行了排序很重要,也请提供信息
a
b
这是向量化的解决方案:
res = (a[:, None] == b).all(-1).any(-1) print(res) array([ True, True, False, True])
请注意,a[:, None] == b将的每行a与按b元素进行比较。然后,我们使用all+any推断True每个子数组是否有所有行:
a[:, None] == 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]]]