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脚本来获取mp3文件tag信息的教程
May 04 Python
Python素数检测实例分析
Jun 15 Python
Python Requests 基础入门
Apr 07 Python
python实现简易通讯录修改版
Mar 13 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
python实现定时发送qq消息
Jan 18 Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 Python
python 读取修改pcap包的例子
Jul 23 Python
用Python写一个自动木马程序
Sep 17 Python
python 字典访问的三种方法小结
Dec 05 Python
Python内置异常类型全面汇总
May 28 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 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+SqlServer实现分页显示
2006/10/09 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
python动态网页批量爬取
2016/02/14 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
创立科技Java面试题
2015/11/29 面试题
效能监察建议书
2014/05/19 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
工作保证书怎么写
2015/02/28 职场文书
无罪辩护词范文
2015/05/21 职场文书
小平小道观后感
2015/06/09 职场文书
法人身份证明书
2015/06/18 职场文书
毕业证明书
2015/06/19 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书