2016-10-03 70 views
2

我正在通過numpy數組進行過濾尋求幫助。我目前有一個包含以下信息的numpy數組:通過numpy數組過濾一行信息

[[x1_1, x1_2, ..., x1_n], [x2_1, x2_2, ..., x2_n], [y1, y2, ..., yn] 

ie。該陣列本質上是一個數據集,其中x1,x2是要素(座標),y是輸出(值)。每一個數據點具有適當的X1,X2,和ÿ,因此,例如,對應於數據點的信息我x1_i,x2_i,和

現在,我想通過對y進行過濾來提取所有數據點,這意味着我想知道y>某個值的所有數據點。在我的情況下,我想要的信息(仍然具有相同的numpy結構),所有y> 0的情況。我真的不知道該怎麼做 - 我一直在玩布爾索引,如d[0:2,y>0]d[d[2]>0] ,但沒有得到任何地方。

闡明的例子:

考慮到數據集:

d = [[0.1, 0.2, 0.3], [-0.1,-0.2,-0.3], [1,1,-1]] 

我把所有點或實例,其中y > 0,即。 d[2] > 0,它應該返回值:

[[0.1, 0.2],[-0.1,-0.2],[1,1]] 

任何建議或幫助,將不勝感激。

回答

3

您可以使用:

import numpy as np 

d = np.array([[0.1, 0.2, 0.3], [-0.1,-0.2,-0.3], [1,1,-1]]) 
print (d) 
[[ 0.1 0.2 0.3] 
[-0.1 -0.2 -0.3] 
[ 1. 1. -1. ]] 

#select last row by d[-1] 
print (d[-1]>0) 
[ True True False] 

print (d[:,d[-1]>0]) 
[[ 0.1 0.2] 
[-0.1 -0.2] 
[ 1. 1. ]] 
+0

哇感謝!關於最後一行的問題,numpy會搜索整個數組,因爲您這樣做了,但是在逗號後面的參數中運行條件?那麼它是否像逗號通過行過濾之前的第一條語句,逗號過濾通過列之後的第二條語句? – Kai

+0

嗯,對我來說更難的問題是,因爲我是'nandy'的'熊貓'人,但我認爲':'意味着選擇所有'行',然後通過布爾掩碼過濾'列'。但我不是'100%'的。 – jezrael

+0

啊好吧聽起來不錯。是的,熊貓似乎更好,但我使用ML和熊貓的numpy進行其他數據分析:)。 – Kai