2013-06-20 6 views
5

glaube, ich habe ein Array, das NX3 ist, und I-Elemente sollen die sagen, erfüllen:Extrahieren von bestimmten Zeilen von NX3 Array, wobei jede Spalte der Bedingung

4 < col1 < 13, 5 > col2 > 3, 10 > col3 > 6 

dh dies auf:

1,2,3 
4,5,6 
9,4,7 

Dann wird es ein Mx3-Array bereitstellen, das nur die Zeilen enthält, die alle drei Bedingungen erfüllen. Für das obige Beispiel, es gibt

9,4,7 

Ich dachte an eine Schleife zu tun, aber ich dachte, numpy oder etwas ähnliches muss etwas haben, die viel schneller ist (zB np.where?)

+1

Sie könnten [Pandas] (http://pandas.pydata.org/) zu suchen. – BrenBarn

Antwort

3

Sie einen Booleschen Array bauen für jede Spalte:

cond1 = (my_array[:, 0] > 4) & (my_array[:, 0] < 13) 
cond2 = (my_array[:, 1] > 3) & (my_array[:, 1] < 5) 
cond3 = (my_array[:, 2] > 6) & (my_array[:, 2] < 10) 

Sie dann and Ihre drei Bedingungen zusammen:

cond = cond1 & cond2 & cond3 

Und Sie schließlich, dass verwenden, um die Zeilen aus Array wählen:

out = my_array[cond] 
Verwandte Themen