python - 用大数组中的零替换空值或缺失值
问题描述
我有一个包含 40000 多个元素的大型数组
a = ['15', '12', '', 18909, ...., '8989', '', '90789', '8']
我正在寻找一种将空“”值替换为“0”的简单方法,以便我可以使用 Numpy 操作数组中的数据。
然后我会使用将数组中的元素转换为整数
a = map(int, a)
这样我就可以在 numpy 中找到数组的平均值
a_mean = np.mean(a)
我的问题是我无法转换为缺少数字的数组中的整数以获得平均值。
解决方案
您可以制作一个小函数,将单个值完全转换为您想要的方式,例如:
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])
推荐阅读
- apache - 将本地IP重定向到公共IP?
- javascript - 如何为JS添加淡入/淡出效果(-类)
- api - Microsoft Graph API 创建事件始终使用 UTC 时区创建会议
- c++ - C++ openCV垫初始化
- php - 准备好的语句不适用于 while 循环,而是直接查询工作正常
- python - python tkinter:使文本小部件随文本自动滚动(与重定向标准输出一起使用)
- elasticsearch - Elasticsearch 摄取管道
- javascript - 将事件添加到“提交”
- python - 如何根据插槽持续时间和休息时间将日期时间范围划分为插槽
- html - 如何在 Angular 9 中正确使用过滤器方法?