Python - 按行比较两个2D数组

时间:2016-04-18 05:07:51

标签: python arrays numpy

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

这是我的数据:

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.]])

我有这个基本的循环

arr = []
for i in range(0, 5):
    arr.append((Array1[i,] == Array2[i,]).all())   

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

有更好的方法吗?

1 个答案:

答案 0 :(得分:5)

np.all有一个轴参数。您可以传递axis=1,以便比较沿着行。

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