Convertir une matrice décimale à une matrice binaire SciPy
Question
Supposons que j'ai une matrice entière qui représente qui a envoyé par courrier électronique qui et combien de fois. Pour l'analyse de réseau social, je voudrais faire un simple graphe non orienté. Donc, je dois convertir la matrice à matrice binaire et plus tard dans une liste de tuples.
Ma question: est-il un moyen rapide, pratique pour réduire la matrice décimale à une matrice binaire.
tel que:
26, 3, 0
3, 195, 1
0, 1, 17
Devient:
1, 1, 0
1, 1, 1
0, 1, 1
La solution
Appliquer la fonction scipy.sign
à toutes les cellules de la matrice.
[EDIT] Cudos speciousfool :
Si x
est votre matrice alors scipy.sign(x)
vous donne la matrice binaire.
Autres conseils
Vous pouvez faire ce qui suit:
>>> import scipy
>>> a = scipy.array((12, 0, -1, 23, 0))
array([12, 0, -1, 23, 0])
>>> (a != 0).astype(int)
array([1, 0, 1, 1, 0])
La magie est dans la partie a != 0
. Vous pouvez appliquer des expressions booléennes pour les tableaux et il retournera un tableau de booléens. Ensuite, il est converti en ints.
Vous pouvez aussi essayer ceci:
>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1
Je suppose que ce sera aussi plus rapide.