Python 实现将numpy中的nan和inf,nan替换成对应的均值


Posted in Python onJune 08, 2020

nan:not a number

inf:infinity;正无穷

numpy中的nan和inf都是float类型

Python 实现将numpy中的nan和inf,nan替换成对应的均值

t!=t 返回bool类型的数组(矩阵)

np.count_nonzero() 返回的是数组中的非0元素个数;true的个数。

np.isnan() 返回bool类型的数组。

那么问题来了,在一组数据中单纯的把nan替换为0,合适么?会带来什么样的影响?

比如,全部替换为0后,替换之前的平均值如果大于0,替换之后的均值肯定会变小,所以更一般的方式是把缺失的数值替换为均值(中值)或者是直接删除有缺失值的一行

demo.py(numpy,将数组中的nan替换成对应的均值):

# coding=utf-8
import numpy as np
 
def fill_ndarray(t1):
 for i in range(t1.shape[1]): # 遍历每一列(每一列中的nan替换成该列的均值)
 temp_col = t1[:, i] # 当前的一列
 nan_num = np.count_nonzero(temp_col != temp_col)
 if nan_num != 0: # 不为0,说明当前这一列中有nan
  temp_not_nan_col = temp_col[temp_col == temp_col] # 去掉nan的ndarray
 
  # 选中当前为nan的位置,把值赋值为不为nan的均值
  temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean() # mean()表示求均值。
 return t1
 
if __name__ == '__main__':
 t1 = np.array([[ 0., 1., 2., 3., 4., 5.],
   [ 6., 7., np.nan, np.nan, np.nan, np.nan],
   [12., 13., 14., 15., 16., 17.],
   [18., 19., 20., 21., 22., 23.]])
 
 t1 = fill_ndarray(t1) # 将nan替换成对应的均值
 print(t1)
 '''
 [[ 0. 1. 2. 3. 4. 5.]
 [ 6. 7. 12. 13. 14. 15.]
 [12. 13. 14. 15. 16. 17.]
 [18. 19. 20. 21. 22. 23.]]
 '''

补充知识:numpy对数组求平均时如何忽略nan值

前言:在对numpy数组求平均np.mean()或者求数组中最大最小值np.max()/np.min()时,如果数组中有nan,此时求得的结果为:nan,那么该如何忽略其中的nan呢?此时应该用另一个方法:np.nanmean(),np.nanmax(),np.nanmin().

使用np.mean()的效果

Python 实现将numpy中的nan和inf,nan替换成对应的均值

使用np.nanmean()的效果

Python 实现将numpy中的nan和inf,nan替换成对应的均值

以上这篇Python 实现将numpy中的nan和inf,nan替换成对应的均值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
对于Python中线程问题的简单讲解
Apr 03 Python
Python中利用sorted()函数排序的简单教程
Apr 27 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
python如何通过实例方法名字调用方法
Mar 21 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
python 追踪except信息方式
Apr 25 Python
python 异步async库的使用说明
May 04 Python
Python+DeOldify实现老照片上色功能
Jun 21 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 #Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 #Python
python如何编写win程序
Jun 08 #Python
如何写python的配置文件
Jun 07 #Python
python dict乱码如何解决
Jun 07 #Python
python中adb有什么功能
Jun 07 #Python
python如何保存文本文件
Jun 07 #Python
You might like
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php 获取本机外网/公网IP的代码
2010/05/09 PHP
php查询及多条件查询
2017/02/26 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
python如何去除字符串中不想要的字符
2020/07/05 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
学习经验交流会主持词
2014/04/01 职场文书
市场营销专业自荐书
2014/06/10 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
整改报告怎么写
2014/11/06 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
初三英语教学反思
2016/02/15 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
四则混合运算教学反思
2016/02/23 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL