Python中的XOR矩阵乘法

时间:2014-05-12 00:17:51

标签: python matrix-multiplication xor

我不确定如何使用XOR加法来乘以两个矩阵。例如,这里:

>>> 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 个答案:

答案 0 :(得分:2)

正如我评论的那样,您可以使用z.dot(b) % 2来获取所需的值。这是因为链式xor等同于加法模式2.也就是说,如果1的数量为奇数,则结果为1,如果为0,则结果为{{1}}甚至是。