2016-09-19 164 views
1

有點尷尬,因爲在Numpy上有很多文檔,但我被困在做這個簡單的任務,那就是獲取所有記錄的嵌套掩碼爲真numpy的代表(相當於dataframe.loc[cond]pandas):在嵌套的numpy數組上應用掩碼-numpy -numpy -numpy -python,

import numpy as np 
a1 = np.array([1,2,3]) 
a2 = np.array(['a','b','c']) 
a3 = np.array(['luca','paolo','francesco']) 
a4 = np.array([True, False,False], dtype='bool') 

combination = np.array([a1,a2,a3,a4]) 
print(combination) 

# slice for a4 == True 
combination[combination[3] == 'True'] 

,但結果不是我想要的。

其實

combination

[['1' '2' '3'] 
['a' 'b' 'c'] 
['luca' 'paolo' 'francesco'] 
['True' 'False' 'False']] 

它產生與combination[combination[3] == 'True']

array([['1', '2', '3']], 
     dtype='<U11') 

,而實際上我想:

[['1'] 
['a' ] 
['luca'] 
['True' ]] 

什麼我做錯了任何想法?

PS:不,我不能做到這一點的大熊貓因爲熊貓有我的RAM,把它改爲一個pandas.Dataframe

回答

2

我相信你只是錯過了其他維度的指標時爆炸:

combination[combination[3] == 'True'] 

應該

combination[:, combination[3] == 'True'] 

注意冒號。

這產生了一個新的ndarray索引,全部第一維度,第二維度只有0。

+0

我覺得在意識到這一點後砸碎鍵盤。謝謝你們的快速響應! – Asher11