Расстояние Хэмминга в NumPy - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь найти более быстрый способ вычислить расстояние Хэмминга между двумя массивами. Можно предположить, что массивы имеют размер A (N1 x D) и B (N2 x D)

Моя попытка на данный момент:

result = np.zeros((A.shape[0], B.shape[0]))
for i in range(A.shape[0]):
    for j in range(B.shape[0]):
        result[i, j] = np.sum(A[i, :] != B[j, :]) #resulting array is of size (1 x D)
return result

Это не достаточно быстро, хотя. Я попытался использовать numpy.count_nonzero вместо sum, но возникает следующее исключение:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all().

РЕДАКТИРОВАТЬ: Я забыл упомянуть, массивы содержат только значения 1 и 0, если это что-то меняет

Мой вопрос: возможно ли заставить его работать?
В качестве дополнительного вопроса: почему numpy.count_nonzero передает в мой код массив __bool()__, а не одно конкретное значение?

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