2016-04-15 7 views
0

Ich habe ein sehr seltsames Problem mit numpy.nonzero(). Es verhält sich gut für Werte, die nicht 1 oder -1 sind, aber für diese beiden scheint es zu seltsamen Ergebnissen zu führen.Numpy.nonzero verhält sich seltsam für Werte 1 oder -1

Zum Beispiel

goalmat = np.matrix([[2, 0, 1], [-1, 0, -1]]) 

macht

matrix([[ 2, 0, 1], 
     [-1, 0, -1]]) 

Nun numpy.nonzero mit (goalmat == x) funktioniert nur teilweise:

>>> np.nonzero(goalmat == 1) 
(matrix([[0]]), matrix([[2]])) 
>>> np.nonzero(goalmat == -1) 
(matrix([[1, 1]]), matrix([[0, 2]])) 

Und

>>> goalmat = np.matrix([[2, 2, 1], [-1, 1, -1]]) 
>>> goalmat 
matrix([[ 2, 2, 1], 
     [-1, 1, -1]]) 
>>> np.nonzero(goalmat == 1) 
(matrix([[0, 1]]), matrix([[2, 1]])) 
>>> np.nonzero(goalmat == -1) 
(matrix([[1, 1]]), matrix([[0, 2]])) 
So

es scheint, die richtigen Standorte für 1 zu geben, wenn ich für -1 fragen ...

Bin ich zu mißbrauchen/Mißverständnis numpy.nonzero()?

+3

, die wie die korrekte Ausgabe sieht für mich ... Für jeden wahren Ort, können Sie eine Matrix der Indizes für die 0-Achse und eine Matrix von Indizes für Achse 1 –

+0

Du hast Recht> ___

+0

Sorry, ich habe gerade die falschen Testläufe von der Shell genommen, du hattest vollkommen recht. Ich reparierte die Frage mit den wirklich seltsamen Ergebnissen, zumindest denke ich, dass sie komisch sind :) –

Antwort

0

Es funktioniert ordnungsgemäß, und Sie haben tatsächlich nicht die nonzero() mit Werten von -1 verwendet, aber mit True und False ist die Ausgabe der Anweisung goalmat == -1. Sie können prüfen, die nonzero() Ergebnis von:

>>> index1, index2 = np.nonzero(goalmat == -1) 
>>> goalmat[index1, index2] 
matrix([[-1, -1]]) 
Verwandte Themen