Frage

Angenommen, ich eine ganze Zahl Matrix haben, die, die per E-Mail hat repräsentiert wem und wie oft. Für die sozialen Netzwerk-Analyse würde Ich mag ein einfaches ungerichteten Graphen machen. Also brauche ich die Matrix zu binärer Matrix und später in eine Liste von Tupeln zu konvertieren.

Meine Frage: Gibt es eine schnelle und bequeme Möglichkeit, die Dezimal-Matrix auf eine binäre Matrix zu reduzieren.

So, dass:

26, 3, 0
3, 195, 1
0, 1, 17

Wird:

1, 1, 0
1, 1, 1
0, 1, 1
War es hilfreich?

Lösung

Tragen Sie die scipy.sign Funktion für jede Zelle in der Matrix.

[EDIT] Cudos speciousfool :

Wenn x Ihre Matrix ist dann scipy.sign(x) gibt Ihnen die binäre Matrix.

Andere Tipps

können Sie wie folgt vor:

>>> 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])

Die Magie ist in dem a != 0 Teil. Sie können Boolesche Ausdrücke auf Arrays anwenden und es wird eine Reihe von booleans zurück. Dann wird auf Ints umgewandelt.

Sie können auch versuchen, diese:

>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1

ich dies auch schnelles erraten werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top