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 相关文章推荐
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
Python元组及文件核心对象类型详解
Feb 11 Python
python得到windows自启动列表的方法
Oct 14 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
python简单区块链模拟详解
Jul 03 Python
python的常见矩阵运算(小结)
Aug 07 Python
python中property和setter装饰器用法
Dec 19 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
Python eval函数原理及用法解析
Nov 14 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 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
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
python局部赋值的规则
2013/03/07 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
python实现ip地址的包含关系判断
2020/02/07 Python
python 画图 图例自由定义方式
2020/04/17 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
委托协议书范本
2014/04/22 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript