Python中的异或矩阵乘法

3 投票
1 回答
4665 浏览
提问于 2025-04-18 06:14

我不太确定怎么用异或加法来乘两个矩阵。比如说,下面这个:

>>> 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

撰写回答