0
votes

Comment puis-je comparer deux matrices pour une similitude avec Python?

python 3: Comment puis-je comparer deux matrices de forme similaire les unes aux autres?

Par exemple, disons que nous avons la matrice X: xxx

Je voudrais comparer ceci à matrice y : xxx

qui me donnerait un score, par exemple 8/9, car 8/9 des éléments étaient les mêmes, à l'exception de ce dernier chiffre qui est passé de 0 à 1. Les matrices que je traites sont beaucoup plus grandes, mais leurs dimensions sont cohérentes pour la comparaison.

Il doit y avoir une bibliothèque d'une sorte qui peut faire cela. Toute pensée?


1 commentaires

Comment allez-vous représentant les matrices en premier lieu?


4 Réponses :


0
votes

Vous pouvez le faire facilement avec des tableaux numpus.

import numpy as np

a = np.array([
    [1, 0, 1],
    [0, 0, 1], 
    [1, 1, 0],
])

b = np.array([
    [1, 0, 1],
    [0, 0, 1],
    [1, 1, 1],
])

print(np.sum(a == b) / a.size)


0 commentaires

0
votes

Si vos matrices sont représentées à l'aide de la bibliothèque tiers numpy (qui fournit un lot d'autres éléments utiles pour traiter avec des matrices, ainsi que tout type de réseau rectangulaire et multidimensionnel): xxx

puis trouver le nombre d'éléments égaux correspondants est aussi simple que: xxx

ceci fonctionne car x == y < / code> "diffuse" la comparaison avec chaque paire d'éléments correspondante: xxx

et nous additionnons les valeurs booléennes (converties entier, true a une valeur de 1 et false a une valeur de 0) et diviser par le nombre total d'éléments.


0 commentaires

0
votes

Si vous utilisez numpy, vous pouvez les comparer et obtenir la sortie suivante: xxx

Pour compter les correspondances, vous pouvez remodeler les matrices à une liste et compter Les valeurs correspondantes: xxx


0 commentaires

0
votes

Si vous utilisez numpy, vous pouvez simplement utiliser np.mean () code> sur le tableau booléen après la comparaison comme suit.

import numpy as np

m1 = np.array([
    [1, 0, 1],
    [0, 0, 1], 
    [1, 1, 0],
])

m2 = np.array([
    [1, 0, 1],
    [0, 0, 1],
    [1, 1, 1],
])

score = np.mean(m1 == m2)
print(score) # prints 0.888..


0 commentaires