我该如何在numpy中定义一个模2运算的矩阵?
例如:
0 0 1 0 1 0
1 1 + 0 1 = 1 0
感谢!
>>> 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]])
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]])
(x * y) % 2
。不过 Kenny 的解决方案更好... 我往往会忘记异或等操作符的存在!这是一种更干净的方式来实现你想要的功能。 - Joe Kington