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

时间:2016-09-19 09:58:45

标签: python arrays numpy indexing slice

自从Numpy上的大量文档以来我有点尴尬但是我被困在做这个简单的任务,就是在嵌套的numpy表示中获取掩码为真的所有记录(相当于dataframe.loc[cond] in pandas):

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' ]]

关于我做错的任何想法?

P.S。:不,我不能在熊猫中做到这一点,因为当将pandas转换为pandas.Dataframe

时,我的RAM会爆炸

1 个答案:

答案 0 :(得分:2)

我相信你只是错过了其他维度的指数:

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

应该是

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

请注意冒号。

这会产生一个新的ndarray,它在所有第一维上都被索引,而在第二维中只有0。