2017-03-01 20 views
2

我有2個像這樣的numpy矩陣。我可以在numpy矩陣上使用xor嗎?

矩陣1

arr1 = 
array([[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 1., 0.]]) 

矩陣2

arr2 = 
array([[ 0., 0., 0.], 
     [ 0., 0., 1.], 
     [ 0., 0., 0.]]) 

我想找到這些矩陣的相似性。我認爲xor可以在矩陣上使用。異或操作應顯示值的不同,然後我可以計算值1以計算相似性的百分比。我不知道如何在Python中使用xor

此代碼無效:a = arr1 xor arr2

+0

是所有元素'0'或'1'內置的功能? –

+0

Python中的XOR是'^',而不是'xor'。 – user2357112

回答

3

您可以簡單地使用arr1 != arr2導致:

>>> arr1 != arr2 
array([[False, False, False], 
     [False, False, True], 
     [False, True, False]], dtype=bool)

然後用.sum()因爲int(False)0int(True)1

>>> (arr1 != arr2).sum() 
2

因此有兩個指數,其arr1[i,j]不等於arr2[i,j]

如果你要計算的相似性(這裏被定義爲是相同元素的數量),可以使用:

>>> (arr1 == arr2).sum()/arr1.size 
0.77777777777777779

這樣的元素的77.77%是相同的。