Hole (Spalte, Zeile) Index von NumPy Array, die eine boolesche Bedingung erfüllt

8

Ich arbeite mit einem 2D NumPy Array. Ich möchte den (Spalten-, Zeilen-) Index oder (x, y) -Koordinaten, wenn Sie dies bevorzugen, von meinem 2D-Array erhalten, das eine boolesche Bedingung erfüllt.

Der beste Weg, um zu erklären, was ich versuche, ist ein triviales Beispiel:

%Vor%

An dieser Stelle habe ich jetzt ein boolesches Array, das angibt wo a > 4 .

Mein Ziel ist es zu diesem Zeitpunkt, die Indizes des booleschen Arrays zu nehmen, wo der Wert True ist. Zum Beispiel haben die Indizes (1, 2) , (2, 0) , (2, 1) und (2, 2) alle den Wert True.

Mein Endziel ist es, mit einer Liste von Indizes zu enden:

%Vor%

Nochmals, ich betone den Punkt, dass der obige Code ein triviales Beispiel ist, aber die Anwendung dessen, was ich versuche, könnte willkürliche Indizes haben, wobei a > 4 und nicht etwas auf arange und reshape basiert.

    
Adrian Rosebrock 28.01.2014, 14:09
quelle

2 Antworten

15

Verwenden Sie numpy.where mit numpy.column_stack :

%Vor%     
Ashwini Chaudhary 28.01.2014, 14:11
quelle
5

Eine Alternative zur Antwort von @Ashwini Chaudhary ist numpy.nonzero

%Vor%

EDIT: Was ist schneller. nonzero und where sind im Wesentlichen äquivalent, aber transpose erweist sich hier als falsch (obwohl es in den Dokumenten erwähnt ):

%Vor%     
ev-br 28.01.2014 16:04
quelle

Tags und Links