在大型数组中用零替换空值或缺失值

use*_*176 3 python arrays int replace numpy

我有一个包含超过 40000 个元素的大数组

a = ['15', '12', '', 18909, ...., '8989', '', '90789', '8']
Run Code Online (Sandbox Code Playgroud)

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

然后我将使用以下方法将数组中的元素转换为整数

a = map(int, a)
Run Code Online (Sandbox Code Playgroud)

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

a_mean = np.mean(a)
Run Code Online (Sandbox Code Playgroud)

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

Bas*_*els 5

您可以创建一个小函数来精确地按照您想要的方式转换单个值,例如:

def to_int(x):
    try:
        return int(x)
    except ValueError:
        return 0
Run Code Online (Sandbox Code Playgroud)

可以与以下命令一起使用map

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

map(to_int, a)
Out[23]: [15, 12, 0, 18909, 8989, 90789, 8]
Run Code Online (Sandbox Code Playgroud)

在列表理解中:

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

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

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