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编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
Django的信号机制详解
May 05 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
PyQt5每天必学之组合框
Apr 20 Python
python 移除字符串尾部的数字方法
Jul 17 Python
详解Matplotlib绘图之属性设置
Aug 23 Python
Python3 JSON编码解码方法详解
Sep 06 Python
超实用的 30 段 Python 案例
Oct 10 Python
Django静态资源部署404问题解决方案
May 11 Python
小 200 行 Python 代码制作一个换脸程序
May 12 Python
Python实现GIF图倒放
Jul 16 Python
Python连接mysql方法及常用参数
Sep 01 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
dedecms系统常用术语汇总
2007/04/03 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
用Python编写web API的教程
2015/04/30 Python
Python中dict和set的用法讲解
2019/03/28 Python
python代码能做成软件吗
2020/07/24 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
校三好学生主要事迹
2014/01/11 职场文书
基层工作经历证明
2014/01/13 职场文书
目标责任书范本
2014/04/16 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
公证处委托书
2015/01/28 职场文书
教师年度个人总结
2015/02/11 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL