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

Kev*_*vin 1 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.]])
Run Code Online (Sandbox Code Playgroud)

我有这个基本的for循环

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

arr
Out[210]: [True, True, True, True, True]
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

ayh*_*han 5

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

(arr1 == arr2).all(axis=1)
Out[24]: array([ True,  True,  True,  True,  True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)