在numpy.wh返回的数组之间查找唯一索引

2024-05-19 13:08:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个由函数numpy.where返回的numpy数组,如下所示:

A = numpy.where(img == 255)
B = numpy.where(img2 != 0)

我需要在AB中找到唯一坐标的数量。我最初考虑使用numpy.intersect1d来获得公共索引的数量,并从两个数组的元素总数中减去这个数量。但是这些数组不是一维的,所以我不知道该怎么做

有什么建议我可以做到这一点吗

谢谢


Tags: 函数numpy元素img数量数组where建议
1条回答
网友
1楼 · 发布于 2024-05-19 13:08:57

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

所以在imgimg2中有5True个不在同一索引处的数组


更新:

如果你想要在imgimg2中的True的数目(即两组True坐标的并集相同)。然后使用逻辑或:|

相关问题 更多 >