在嵌套的numpy数组上应用掩码-numpy -numpy -numpy -python,

问题描述:

有点尴尬,因为在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

我相信你只是错过了其他维度的指标时爆炸:

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

应该

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

注意冒号。

这产生了一个新的ndarray索引,全部第一维度,第二维度只有0。

+0

我觉得在意识到这一点后砸碎键盘。谢谢你们的快速响应! – Asher11