Bij het uitvoeren van een onderzoek werd een $$M \times N$$ matrix $$X$$ opgemaakt die verschillende waarnemingen voorstelt. Elke rij van deze matrix $$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 $$D$$ te bepalen waarbij het element $$D_{ij}$$ de Hamming-afstand tussen de rijen $$i$$ en $$j$$ voorstelt in de matrix $$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 $$\verb!hamming()!$$ die dit realiseert.

Argumenten

Een $$M \times N$$ NumPy-matrix gevuld met gehele getallen 1 of 0.

Resultaat

Een $$M \times M$$ NumPy-matrix zoals hierboven gedefinieerd.

Voorbeeld

X = np.matrix([[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]]