2010-09-15 3 views

ответ

7

Эта операция называется "исключающее".

>>> import numpy 
>>> x = numpy.array([[0,0],[1,1]]) 
>>> y = numpy.array([[1,0],[0,1]]) 
>>> x^y 
array([[1, 0], 
     [1, 0]]) 

BTW, (элементное) умножение по модулю 2 может быть выполнено с помощью «и».

>>> x & y 
array([[0, 0], 
     [0, 1]]) 
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]]) 
+0

мне также нужно модульное сложение при умножении двух матриц – yassin

+0

@Yassin - Тогда просто сделать '(х * у)% 2'. Решение Кенни - это путь, хотя ... Я, как правило, забываю, что xor и тому подобное существуют! Это более чистый способ делать то, что вы хотите. –

Смежные вопросы