Как определить в numpy матрицу, которая использует операции по модулю 2?Numpy Модульная арифметика
Например:
0 0 1 0 1 0
1 1 + 0 1 = 1 0
Спасибо!
Как определить в numpy матрицу, которая использует операции по модулю 2?Numpy Модульная арифметика
Например:
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]])
BTW, (элементное) умножение по модулю 2 может быть выполнено с помощью «и».
>>> 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]])
мне также нужно модульное сложение при умножении двух матриц – yassin
@Yassin - Тогда просто сделать '(х * у)% 2'. Решение Кенни - это путь, хотя ... Я, как правило, забываю, что xor и тому подобное существуют! Это более чистый способ делать то, что вы хотите. –