首页 > 解决方案 > 用大数组中的零替换空值或缺失值

问题描述

我有一个包含 40000 多个元素的大型数组

a = ['15', '12', '', 18909, ...., '8989', '', '90789', '8']

我正在寻找一种将空“”值替换为“0”的简单方法,以便我可以使用 Numpy 操作数组中的数据。

然后我会使用将数组中的元素转换为整数

a = map(int, a)

这样我就可以在 numpy 中找到数组的平均值

a_mean = np.mean(a)

我的问题是我无法转换为缺少数字的数组中的整数以获得平均值。

标签: pythonarraysnumpyreplaceint

解决方案


您可以制作一个小函数,将单个值完全转换为您想要的方式,例如:

def to_int(x):
    try:
        return int(x)
    except ValueError:
        return 0

可用于map

In [22]: a = ['15', '12', '', 18909, '8989', '90789', '8']

map(to_int, a)
Out[23]: [15, 12, 0, 18909, 8989, 90789, 8]

在列表理解中:

In [25]: np.array([to_int(x) for x in a])
Out[25]: array([   15,    12,     0, 18909,  8989, 90789,     8])

或在生成器表达式中直接创建一个 numpy 数组:

In [27]: np.fromiter((to_int(x) for x in a), dtype=int)
Out[27]: array([   15,    12,     0, 18909,  8989, 90789,     8])

推荐阅读