Допустим, у меня есть следующий массив векторов x
, где возможные значения 0,1,2:
import numpy as np
x = np.random.randint(0,3,(10,5), dtype=np.int8)
Я хочу сделать сопоставление сходства для всех векторов с нулевым расстоянием Хэмминга илиодин, где правила для сопоставления:
1. 0 == 0 and 1 == 1 i.e. hamming distance is 0
2. 2 match both 1 and 0 i.e. hamming distance is 0
3. otherwise Hamming distance is 1
т.е. найти некоторую арифметическую операцию, которая будет возвращать:
0 x 0 = 0
1 x 1 = 0
0 x 1 = 1
1 x 0 = 1
0 x 2 = 0
1 x 2 = 0
И мой вывод должен быть расстояние Хемминга между каждым вектором (строка) x
и произвольный вектор z
:
z = np.random.randint(0,2,5)
np.sum(np.add(x,z) == 1, axis=1)