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



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

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

有什么想法我做错了吗?

注::不,我不能在熊猫中这样做,因为熊猫在将此转换为pandas.Dataframe

时RAM会爆炸。

我相信你只是错过了另一个维度的索引:

combination[combination[3] == 'True']
应该

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

注意冒号

这将产生一个新的索引为所有第一个维度的narray,第二个维度的索引为0。

最新更新