演算モジュロ 2 を使用する行列を numpy で定義するにはどうすればよいですか?
例えば:
0 0 1 0 1 0
1 1 + 0 1 = 1 0
ありがとう!
この操作は「xor」と呼ばれます。
>>> 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]])