如何在行式 true/false 数组的结果中获得两个数组之间的行式比较?
给定数据:
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
????
P.S.: 在这个例子中,数组 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
:
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]]]
关于python - 检查不同 numpy 数组中的相同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352527/