Bij het uitvoeren van een onderzoek werd een $$M \times N$$ matrix $$\mathbf{X}$$ opgemaakt die verschillende waarnemingen voorstelt. Elke rij van deze matrix $$\mathbf{X}$$ bevat een afzonderlijke uitvoering van eenzelfde experiment waarbij elke kolom van de matrix een specifieke binaire (dus 1 of 0) observatiewaarde $$w_{ij}$$ voorstelt.
We wensen een $$M \times M$$ matrix $$\mathbf{D}$$ te bepalen waarbij het element $$D_{ij}$$ de Hamming-afstand tussen de rijen $$i$$ en $$j$$ voorstelt in de matrix $$\mathbf{X}$$ (de diagonaal elementen zijn dus alvast 0). De Hamming-afstand wordt hierbij gedefinieerd als het aantal posities waarin twee rijen een verschillende waarde hebben. Schrijf een functie hamming() die dit realiseert.

Argumenten

Een $$M \times N$$ NumPy-tabel gevuld met gehele getallen 1 of 0. Deze tabel stelt de matrix $$\mathbf{X}$$ voor.

Resultaat

Een $$M \times M$$ NumPy-tabel zoals hierboven gedefinieerd, deze tabel stelt de matrix $$\mathbf{D}$$ voor.

Voorbeeld

X = np.array([[1, 0, 0, 0],
 [1, 1, 1, 1],
 [0, 1, 0, 1],
 [1, 1, 1, 1],
 [0, 1, 0, 0],
 [1, 1, 0, 1],
 [1, 1, 1, 1],
 [1, 0, 0, 1]])
hamming(X) = 
[[0 3 3 3 2 2 3 1]
 [3 0 2 0 3 1 0 2]
 [3 2 0 2 1 1 2 2]
 [3 0 2 0 3 1 0 2]
 [2 3 1 3 0 2 3 3]
 [2 1 1 1 2 0 1 1]
 [3 0 2 0 3 1 0 2]
 [1 2 2 2 3 1 2 0]]