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 22 Python
解决pandas中读取中文名称的csv文件报错的问题
Jul 04 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
python实现大文本文件分割
Jul 22 Python
对Python _取log的几种方式小结
Jul 25 Python
Python中关于浮点数的冷知识
Sep 22 Python
简单了解python元组tuple相关原理
Dec 02 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
python 实现任务管理清单案例
Apr 25 Python
python re.match()用法相关示例
Jan 27 Python
Python访问Redis的详细操作
Jun 26 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 读取shell管道传输过来的内容
2010/03/01 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
python调用windows api锁定计算机示例
2014/04/17 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
python发送邮件脚本
2018/05/22 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
应届生财务管理求职信
2013/11/06 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
工地安全标语
2014/06/07 职场文书
80后婚前协议书范本
2014/10/24 职场文书
介绍信范文
2015/01/31 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
Django与数据库交互的实现
2021/06/03 Python