2013-04-24 5 views
5

Ich habe eine Matrix und einen boolean Vektor:Wählen Sie Zeilen in einer Numpy 2D-Array mit einem boolean Vektor

>>>from numpy import * 
>>>a = arange(20).reshape(4,5) 
array([[ 0, 1, 2, 3, 4], 
    [ 5, 6, 7, 8, 9], 
    [10, 11, 12, 13, 14], 
    [15, 16, 17, 18, 19]]) 

>>>b = asarray([1, 1, 0, 1]).reshape(-1,1) 
array([[1], 
    [1], 
    [0], 
    [1]]) 

Jetzt möchte ich alle die entsprechenden Zeilen in dieser Matrix wählen, in dem der entsprechende Index in den Vektor ist gleich Null.

Wie kann ich es so machen, dass dies diese bestimmte Zeile zurückgibt?

[10, 11, 12, 13, 14] 

Antwort

2

Die Form b ist etwas seltsam, aber wenn man es als ein schöneres Index eine einfache Auswahl basteln kann:

idx = b.reshape(a.shape[0]) 
print a[idx==0,:] 

>>> [[10 11 12 13 14]] 

Sie lesen kann dies als „wählen Sie alle Zeilen, in denen die Index ist 0, und für jede ausgewählte Zeile nehmen Sie alle Spalten ". Ihre erwartete Antwort sollte wirklich eine Liste von Listen sein, da Sie nach allen Zeilen fragen, die einem Kriterium entsprechen.

Verwandte Themen