二维数组上的 numpy logical.xor
numpy logical.xor on a 2D array
我有一个只有 0
和 255
值(从黑白图像创建)的二维 numpy 数组,我想与另一个类似的二维数组进行异或。
这些数组的dtype
为uint8
,形状完全相同
到目前为止,我能找到的唯一信息和示例是处理一维数组的。
在异或运算之前,我是否需要 'flatten' 这些二维数组?如果是这样,那是怎么做到的?
numpy.logical_xor
and numpy.bitwise_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]])
逻辑异或:
>>> 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]])
按位异或:
>>> 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]])
我有一个只有 0
和 255
值(从黑白图像创建)的二维 numpy 数组,我想与另一个类似的二维数组进行异或。
这些数组的dtype
为uint8
,形状完全相同
到目前为止,我能找到的唯一信息和示例是处理一维数组的。
在异或运算之前,我是否需要 'flatten' 这些二维数组?如果是这样,那是怎么做到的?
numpy.logical_xor
and numpy.bitwise_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]])
逻辑异或:
>>> 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]])
按位异或:
>>> 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]])