Модульная арифметика Numpy - PullRequest
       21

Модульная арифметика Numpy

2 голосов
/ 15 сентября 2010

Как определить в numpy матрицу, которая использует операции по модулю 2?

Например:

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

Спасибо!

Ответы [ 2 ]

7 голосов
/ 15 сентября 2010

Эта операция называется "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 можно выполнить с помощью «и».

>>> x & y
array([[0, 0],
       [0, 1]])
1 голос
/ 15 сентября 2010

Вы можете создать подкласс 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]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...