我可以在numpy矩阵上使用xor吗?

时间:2017-03-01 18:01:09

标签: python numpy matrix

我有这样的2个numpy矩阵。

矩阵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可用于矩阵。 Xor操作应显示值不同的位置,然后我可以计算值1来计算相似度的百分比。我不知道如何在python中使用xor

此代码不起作用:a = arr1 xor arr2

4 个答案:

答案 0 :(得分:4)

您只需使用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%的元素是相同的。

答案 1 :(得分:1)

答案 2 :(得分:1)

A XOR B表示:

(A而不是B)或(B而不是A):

$1

...至少对于布尔数组。

答案 3 :(得分:0)

如果您有二进制 ndarray,那么您也可以使用 logical_xor()

np.logical_xor(arr1, arr2).sum()
# 2