Поиск уникальных индексов между массивами, возвращаемыми numpy.where - PullRequest
0 голосов
/ 28 августа 2018

У меня есть два пустых массива, возвращаемых функцией numpy.where, вот так:

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

Мне нужно найти количество уникальных координат в A и B. Сначала я предполагал использовать numpy.intersect1d, чтобы получить число общих индексов и вычесть это из общего числа элементов из обоих массивов. Но эти массивы не являются одномерными, поэтому я не знаю, как это сделать.

Любые предложения, как мне это сделать?

Спасибо

1 Ответ

0 голосов
/ 28 августа 2018

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 s в img или img2, которых нет в другом массиве с таким же индексом.


Обновление:

Если вам нужно число True s в img или img2 (т. Е. Такое же, как объединение двух наборов их True координат). Затем используйте логическое или вместо: |.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...