在嵌套的 numpy 数组上应用掩码 - numpy - python
applying a mask on a nested numpy array - numpy - python
有点尴尬,因为关于 Numpy 的大量文档,但我被困在做这个简单的任务,即在嵌套的 numpy 表示中获取掩码为真的所有记录(相当于 dataframe.loc[cond]
在 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 在将其转换为 pandas.Dataframe
时我的 RAM 爆炸了
我相信您只是缺少另一个维度的索引:
combination[combination[3] == 'True']
应该是
combination[:, combination[3] == 'True']
注意冒号。
这会产生一个新的 ndarray,在所有第一个维度上建立索引,在第二个维度中仅索引 0。
有点尴尬,因为关于 Numpy 的大量文档,但我被困在做这个简单的任务,即在嵌套的 numpy 表示中获取掩码为真的所有记录(相当于 dataframe.loc[cond]
在 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 在将其转换为 pandas.Dataframe
我相信您只是缺少另一个维度的索引:
combination[combination[3] == 'True']
应该是
combination[:, combination[3] == 'True']
注意冒号。
这会产生一个新的 ndarray,在所有第一个维度上建立索引,在第二个维度中仅索引 0。