Python - 按行比较两个二维数组

3

我有两个数组,想要逐行(即观察)进行比较,并获得匹配的总行数。

以下是我的数据:

Array1 
Out[207]: 
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.]])

Array2
Out[208]: 
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.]])

我有一个基本的for循环。
arr = []
for i in range(0, 5):
    arr.append((Array1[i,] == Array2[i,]).all())   

arr
Out[210]: [True, True, True, True, True]

有没有更好的方法来完成这个任务?


如果它对你有效,你所说的更好的方式是什么意思?它非常缓慢或类似的情况吗? - Peaceful
@SnehalShekatkar 嗯,如果有更有效的方法来做这件事呢?从R语言来看,循环是“不好”的,我觉得这很荒谬,但我想知道Python是否也存在类似的问题? - Kevin
1个回答

8

np.all 函数拥有一个轴参数。你可以传递 axis=1,这样就可以沿着行进行比较。

(arr1 == arr2).all(axis=1)
Out[24]: array([ True,  True,  True,  True,  True], dtype=bool)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接