numpy logic.xor на 2D-массив - PullRequest
       8

numpy logic.xor на 2D-массив

0 голосов
/ 28 ноября 2018

У меня есть двумерный массив с только значениями 0 и 255 (созданный из черно-белого изображения), который я хотел бы XOR с другим подобным 2D-массивом.

dtype из этих массивов uint8 и их формы идентичны.

Единственная информация и примеры, которые мне удалось найти, касаются одномерных массивов.

Нужно ли мне«сплющить» эти 2D массивы перед XOR'ом?Если да, то как это сделать?

1 Ответ

0 голосов
/ 28 ноября 2018

numpy.logical_xor и numpy.bitwise_xor будут работать для двумерных массивов, как и операторы != и ^ (по существу, логический и побитовый XOR соответственно).

edit : Я только что заметил в вашем заголовке, что вы ищете логический XOR, но я оставлю там побитовую информацию для справки, если это будет полезно.

Настройка :

a = np.random.choice([0,255], (5,5))
b = np.random.choice([0,255], (5,5))

>>> a
array([[255, 255,   0, 255, 255],
       [255, 255,   0, 255,   0],
       [255,   0,   0,   0,   0],
       [  0, 255, 255, 255, 255],
       [  0,   0, 255,   0,   0]])
>>> b
array([[  0, 255, 255, 255, 255],
       [255,   0,   0, 255,   0],
       [255,   0, 255,   0, 255],
       [  0,   0,   0,   0,   0],
       [255,   0,   0,   0, 255]])

Логический XOR :

>>> np.logical_xor(a,b)
array([[ True, False,  True, False, False],
       [False,  True, False, False, False],
       [False, False,  True, False,  True],
       [False,  True,  True,  True,  True],
       [ True, False,  True, False,  True]])

# equivalently:
>>> a!=b
array([[ True, False,  True, False, False],
       [False,  True, False, False, False],
       [False, False,  True, False,  True],
       [False,  True,  True,  True,  True],
       [ True, False,  True, False,  True]])

Битовый XOR :

>>> np.bitwise_xor(a,b)
array([[255,   0, 255,   0,   0],
       [  0, 255,   0,   0,   0],
       [  0,   0, 255,   0, 255],
       [  0, 255, 255, 255, 255],
       [255,   0, 255,   0, 255]])

# equivalently:
>>> a^b
array([[255,   0, 255,   0,   0],
       [  0, 255,   0,   0,   0],
       [  0,   0, 255,   0, 255],
       [  0, 255, 255, 255, 255],
       [255,   0, 255,   0, 255]])
...