首页 > 解决方案 > 使用布尔过滤创建数组

问题描述

这可能是一个非常简单的问题,但我不知道最好的 python 方式是什么。

假设我有一个数组 a 和 filter_array f,我想创建数组 c。

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
f = [True, False, False, False, True, True, False, True, False]
c = [1,"" ,"" ,"" , 5, 6,"" , 8,"" ]

*我想要 "" 当 False

我怎样才能得到c??注意我不想要[1,5,6,8]

非常感谢

标签: pythonpandasnumpy

解决方案


看起来您希望元素之间有一个空白字符串,这意味着它最终是一个字符串数组。如果是这种情况,您可以这样做:

c = np.where(f,a,'')

>>> c
array(['1', '', '', '', '5', '6', '', '8', ''], dtype='<U21')

推荐阅读