python 3: Comment puis-je comparer deux matrices de forme similaire les unes aux autres?
Par exemple, disons que nous avons la matrice X: p> Je voudrais comparer ceci à matrice y : p> 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. P> Il doit y avoir une bibliothèque d'une sorte qui peut faire cela. Toute pensée? P> p>
4 Réponses :
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)
Si vos matrices sont représentées à l'aide de la bibliothèque tiers numpy (qui fournit un lot em> d'autres éléments utiles pour traiter avec des matrices, ainsi que tout type de réseau rectangulaire et multidimensionnel): puis trouver le nombre d'éléments égaux correspondants est aussi simple que: p> ceci fonctionne car et nous additionnons les valeurs booléennes (converties entier, x == y < / code> "diffuse" la comparaison avec chaque paire d'éléments correspondante: p>
true code> a une valeur de 1 et
false code> a une valeur de 0) et diviser par le nombre total d'éléments. p> p>
Si vous utilisez numpy, vous pouvez les comparer et obtenir la sortie suivante: Pour compter les correspondances, vous pouvez remodeler les matrices à une liste code> et compter Les valeurs correspondantes: p>
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..
Comment allez-vous représentant i> les matrices en premier lieu?