Numpy 模数运算

4

我该如何在numpy中定义一个模2运算的矩阵?

例如:

0 0       1 0       1 0
1 1   +   0 1   =   1 0

感谢!
2个回答

10
这个操作被称为“异或”。
>>> import numpy
>>> x = numpy.array([[0,0],[1,1]])
>>> y = numpy.array([[1,0],[0,1]])
>>> x ^ y
array([[1, 0],
       [1, 0]])

顺便说一下,(逐元素)模2乘法可以用“and”来完成。

>>> x & y
array([[0, 0],
       [0, 1]])

2
你可以创建一个numpy.ndarray的子类并重写__add__方法,但我认为更简单的方法是直接明确。例如:
import numpy as np
x = np.array([[0,0],[1,1]])
y = np.array([[1,0],[0,1]])

print (x + y) % 2

这将产生:

array([[1, 0],
       [1, 0]])

当我需要对两个矩阵进行乘法运算时,我还需要模加运算。 - yassin
@Yassin - 那就直接做 (x * y) % 2。不过 Kenny 的解决方案更好... 我往往会忘记异或等操作符的存在!这是一种更干净的方式来实现你想要的功能。 - Joe Kington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接