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获取远程图片大小和尺寸的方法
Mar 26 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
python实现在IDLE中输入多行的方法
Apr 19 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
python em算法的实现
Oct 03 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程序
2006/10/09 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
实例讲解jquery与json的结合
2016/01/07 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
Python字符串匹配算法KMP实例
2015/07/18 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
傲盾软件面试题
2015/08/17 面试题
小学毕业典礼主持词
2014/03/27 职场文书
班级寄语大全
2014/04/10 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技