2015-11-13 65 views
1

我具有類似於numpy的數組:選擇數據

a = np.array([1,1,1], 
      [1,1,1], 
      [2,1,1], 
      [2,3,1], 
      [2,3,1], 
      [2,3,1], 
      [3,4,1], 
      [3,4,1], 
      [3,4,1], 
]) 

,並想以提取其中

a[0,:] >=2 and a[1,:] < 4 

到b中,產生的行:

b = np.array([2,1,1], 
      [2,3,1], 
      [2,3,1], 
      [2,3,1], 
]) 

我試過

b = a[(a[0,:] >=2) & (a[1,:] < 4)] 

b = a[np.where((a[0,:] >=2) & (a[1,:] < 4))] 

,但不起作用。有任何想法嗎?

謝謝! 豪爾赫

+2

'一個[0,:]'是第一行。你想要第一列嗎?第一列是'a [:, 0]'。 – user2357112

+0

啊,就是這樣,基本的錯誤,不能發現它,對不起。謝謝! – jorgehumberto

+0

調試時,我喜歡看那個內部布爾掩碼。通常挖掘並查看碎片更有效率,而不是在另一層計算上(例如「where」)。 – hpaulj

回答

0

我不知道該怎麼做一步到位,但你可以做

b = a[a[:,0]>=2] 
c = b[b[:,1]<4] 

print c 
+0

是的,這將工作,謝謝:) – jorgehumberto

3

你的條件是使用a第一排和第二排,而不是第一和第二列。 a[:, n]選擇第n列,所以要

b = a[(a[:, 0] >= 2) & (a[:, 1] < 4)] 
+0

正是我所需要的。謝謝! – jorgehumberto