函数numpy.where
返回了两个numpy数组,如下所示:
A = numpy.where(img == 255)
B = numpy.where(img2 != 0)
我需要在A
和B
中找到唯一坐标的数量。我最初考虑使用numpy.intersect1d
来获取公共索引的数量,并从两个数组的元素总数中减去该数量。但是这些数组不是一维的,所以我不确定该怎么做。
有什么建议可以实现这一目标吗?
谢谢
答案 0 :(得分:1)
Numpy将xor运算符(^
)解释为逻辑xor,遵循:
X|Y|X^Y
0|0| 0
0|1| 1
1|0| 1
1|1| 0
因此您可以对布尔数组进行异或:
(img == 255) ^ (img2 != 0)
一个例子:
>>> img == 255
array([[False, True, False],
[ True, False, False],
[False, False, False]])
>>> img != 0
array([[ True, True, True],
[ True, True, True],
[ True, True, True]])
>>> (img == 255) ^ (img2 != 0)
array([[False, False, True],
[ True, True, True],
[False, False, True]])
>>> ((img == 255) ^ (img2 != 0)).sum()
5
因此5
或True
中有img
个img2
不在同一索引的另一个数组中。
更新:
如果您想要True
或img
中img2
的数量(即与两组True
坐标的并集相同)。然后使用逻辑或代替:|
。