python - 使用布尔过滤创建数组
问题描述
这可能是一个非常简单的问题,但我不知道最好的 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]
非常感谢
解决方案
看起来您希望元素之间有一个空白字符串,这意味着它最终是一个字符串数组。如果是这种情况,您可以这样做:
c = np.where(f,a,'')
>>> c
array(['1', '', '', '', '5', '6', '', '8', ''], dtype='<U21')