2013-06-20 45 views
5

假設我有一個數組是NX3,我想滿足元素說:提取NX3陣列中的特定行,從而每一列滿足條件

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

即這適用於:

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

然後它將提供一個Mx3數組,其中只包含滿足所有三個條件的行。對於上面的例子,它輸出

9,4,7 

我覺得做一個循環,但我想通numpy的或類似的必須有一些東西,是更快的東西(如np.where?)

+1

你可能想看看[pandas](http://pandas.pydata.org/)。 – BrenBarn

回答

3

爲您打造一個布爾數組爲每列:

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) 

然後你and你的三個條件一起:

cond = cond1 & cond2 & cond3 

然後你最終使用它來選擇陣列中的行:

out = my_array[cond]