2016-04-18 16 views
1

Ich habe zwei Arrays, die ich Zeile für Zeile vergleichen möchte (was Beobachtungen ist) und die Gesamtmenge der Zeilen, die übereinstimmen.Python - Vergleichen Sie zwei 2D-Arrays nach Zeile

Hier ist meine Daten:

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

ich diese grundlegende haben für Schleife

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

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

Gibt es einen besseren Weg, dies zu tun?

+0

Wenn es für Sie arbeitet, was meinen Sie mit einem besseren Weg? Ist es sehr langsam oder so? – Peaceful

+0

@SnehalShekatkar Nun, wenn es einen effizienteren Weg gibt, dies zu tun? Kommen aus R-Schleifen sind "schlecht", die ich albern finde, aber fragte sich, ob Python einige der gleichen Probleme hat? – Kevin

Antwort

5

np.all hat einen Achsenparameter. Sie können axis=1 übergeben, so dass der Vergleich entlang der Zeilen erfolgt.

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