从列表和数组中过滤空字符串

the_darkside

我有一个空字符串列表:

test = ['foo', '', 'bar', '', 'baz']

以下代码将去除空字符串并返回所需的输出:

list(filter(None, test))
Out:['foo', 'bar', 'baz']

当我将列表变成一个numpy数组时,通过映射应用相同的功能不起作用:

test = np.array(['foo', '', 'bar', '', 'baz'], dtype='<U15')

def g(x):
    return list(filter(None, x))

def array_map(x):
    return np.array(list(map(g, x)))

array_map(test)
Out: array([list(['f', 'o', 'o']), list([]), list(['b', 'a', 'r']), list([]),
       list(['b', 'a', 'z'])], dtype=object)

为什么会发生这种情况?从numpy数组中删除空字符串的正确,简单方法是什么?

卡尔·克内希特尔

当我将列表变成一个numpy数组时,通过映射应用相同的功能不起作用

对; 该函数已经将您的源序列变成了您要从中组成数组的列表,因此没有理由进行任何映射。

为什么会这样

映射g与的每个元素分别调用的test均值的元素是字符串;与被评估与所述串中的一个在迭代的字符的字符串。所有这些字符都通过过滤器,因此制作了一个包含它们的字符因此,ped版本包含一堆字符列表,然后将其传递给g xtestlist(filter(None, x))xtestfilterlistmaptestnp.array

什么是从numpy数组中删除空字符串的正确,简单方法?

好吧,如果你想做到这一点的filter,它看起来像numpy的阵列传递到一个单一的调用filter从结果,然后再构建一个新的阵列。只有,生成的filter对象不会被所自动迭代np.array,因此您必须首先创建一个列表。从而:

>>> np.array(list(filter(None, test)), dtype='<U15')
array(['foo', 'bar', 'baz'], dtype='<U15')

(请注意,dtype如果需要保留,则需要明确指定需求;否则,Numpy将推断出足以满足数据需求的最小类型。)

但是,最好将Numpy工具用于此任务。从数组中删除数据的惯用方式是创建一个与所需元素匹配的掩码,并为此进行索引:

>>> test[test != '']
array(['foo', 'bar', 'baz'], dtype='<U15')

(如果您想删除所有虚假的东西(即不能满足if条件的东西),则可以使用有点笨拙的命名nonzero方法:test[test.nonzero()]。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用getTextContent()时数组列表中的空字符串

来自分类Dev

检查数组列表中的空字符串

来自分类Dev

存储字符串和数组列表

来自分类Dev

删除字符串数组中的空字符串

来自分类Dev

字符串数组中的空字符串

来自分类Dev

Python:从多个字典列表中过滤空字符串

来自分类Dev

是否有更好的方法从数组中过滤NULL,false和空字符串(并保留ZERO)?

来自分类Dev

过滤掉 hivecontext.sql 中的空字符串和空字符串

来自分类Dev

从字符串列表中删除空字符串

来自分类Dev

从python中的列表中删除空字符串

来自分类Dev

空字符串和'\ 0'char有什么区别?(从指针和数组的角度来看)

来自分类Dev

在JAVA中返回字符串数组和数组操作

来自分类Dev

从DataFrame列的列表中删除空字符串

来自分类Dev

如何从列表对象中删除空字符串

来自分类Dev

删除数组的Perl哈希中的空字符串

来自分类Dev

如何删除数组中的空字符串

来自分类Dev

将数组中的空字符串替换为0

来自分类Dev

删除数组的Perl哈希中的空字符串

来自分类Dev

空字符串如何存储在char数组中?

来自分类Dev

如何从数组中删除空字符串?

来自分类Dev

Perl dbi(选择)获取数组中的空字符串

来自分类Dev

从数组中过滤字符串

来自分类Dev

在PHP中过滤字符串数组

来自分类Dev

如何求和数组中的字符串值

来自分类Dev

在Ruby中使用文件中的字符串和数组

来自分类Dev

目标C中的字符串块和数组

来自分类Dev

如何从 C# 中的字符串数组中删除空字符串?

来自分类Dev

创建空字符串数组?

来自分类Dev

创建空字符串数组BigQuery