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 相关文章推荐
python3.5使用tkinter制作记事本
Jun 20 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
python清除字符串中间空格的实例讲解
May 11 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
Dec 03 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
python实现滑雪者小游戏
Feb 22 Python
python批量修改文件名的示例
Sep 27 Python
Python利用myqr库创建自己的二维码
Nov 24 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开发中的安全防范知识详解
2013/06/06 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
php处理带有中文URL的方法
2016/07/11 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
javascript prototype 原型链
2009/03/12 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
windows下python连接oracle数据库
2017/06/07 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Python八皇后问题解答过程详解
2019/07/29 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
三星英国官网:Samsung英国
2018/09/25 全球购物
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
证券期货行业个人的自我评价
2013/12/26 职场文书
给老师的道歉信
2014/01/11 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
Python安装使用Scrapy框架
2022/04/12 Python