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入门篇之字典
Oct 17 Python
利用Python求阴影部分的面积实例代码
Dec 05 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
Python检查ping终端的方法
Jan 26 Python
python实现简单图片物体标注工具
Mar 18 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
Django中Middleware中的函数详解
Jul 18 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
python yield关键词案例测试
Oct 15 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
May 07 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获取一个变量的名字的方法
2014/09/05 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
python实现马耳可夫链算法实例分析
2015/05/20 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
爱耳日活动总结
2014/04/30 职场文书
新教师培训心得体会
2014/09/02 职场文书
大学团日活动总结书
2015/05/11 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
QT与javascript交互数据的实现
2021/05/26 Javascript
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python