Я пытаюсь найти более быстрый способ вычислить расстояние Хэмминга между двумя массивами. Можно предположить, что массивы имеют размер 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()__
, а не одно конкретное значение?