Python中的异或矩阵乘法
我不太确定怎么用异或加法来乘两个矩阵。比如说,下面这个:
>>> b = numpy.array([[1, 0, 0, 0, 1, 1, 0],
[0, 1, 0, 0, 0, 1, 1],
[0, 0, 1, 0, 1, 1, 1],
[0, 0, 0, 1, 1, 0, 1]])
>>> z = numpy.array([1, 1, 0, 1])
>>> z.dot(b)
array([1, 1, 0, 1, 2, 2, 2])
我希望结果数组的第4、5和6个位置的值是通过以下方式计算出来的:
1(1) xor 0(1) xor 1(0) xor 1(1) = 0
1(1) xor 1(1) xor 1(0) xor 0(1) = 0
0(1) xor 1(1) xor 1(0) xor 1(1) = 0
有什么建议吗?
1 个回答
5
正如我之前提到的,你可以用 z.dot(b) % 2
来得到你想要的结果。这是因为连续的 xor
操作其实和在2的范围内的加法是一样的。也就是说,如果 1
的数量是奇数,结果就是 1
;如果是偶数,结果就是 0
。