在嵌套的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。
我觉得在意识到这一点后砸碎键盘。谢谢你们的快速响应! – Asher11