2013-06-20 6 views
5

Supponiamo di avere una matrice che è NX3, e voglio elementi che soddisfano dire:estrazione righe specifiche di matrice NX3 cui ogni condizione soddisfa colonna

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

cioè applicare questo a:

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

Quindi fornirà un array Mx3 che contiene solo le righe che soddisfano tutte e tre le condizioni. Per l'esempio di cui sopra, emette

9,4,7 

ho pensato di fare un ciclo, ma ho pensato NumPy o qualcosa di simile deve avere qualcosa che è molto più veloce (ad esempio np.where?)

+1

Si potrebbe desiderare di guardare [panda] (http://pandas.pydata.org/). – BrenBarn

risposta

3

Si crea un allineamento booleano per ogni colonna:

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) 

Voi poi and tuoi tre condizioni insieme:

cond = cond1 & cond2 & cond3 

E finalmente si usa che per selezionare le righe dell'array:

out = my_array[cond] 
Problemi correlati