2013-01-24 40 views
2

,我有以下數據獲取行符合若干標準

In [56]:data 
Out[56]: 
array([[ 4360., 6178.], 
     [ 10906., 14956.], 
     [ 5071., 8963.], 
     ..., 
     [ 16019., 12300.], 
     [ 12306., 3327.], 
     [ 13663., 12641.]]) 

我想在a所有其零元素比其他一些低於一定值value1和較高的行存儲陣列值爲value2

我有嘗試以下

d[ 9057 > d[0::,0] > 8000, 0::] 

d[d[0::,0] > 8000 and d[0::,0] < 9057, 0::] 

但兩者都通過以下錯誤

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

是否有這樣一種有效的方式停止?謝謝。

回答

4

下應該這樣做:

d[(d[0::,0] > 8000) & (d[0::,0] < 9057), 0::] 

順便說一句,你可以取代所有這些0:::

d[(d[:,0] > 8000) & (d[:,0] < 9057)] 

我覺得這對眼睛更容易一些。

+0

是的,這是做到了。是的,用':'看起來很「清潔」。謝謝! – Sebastialonso