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 操作符重载方法示例
Nov 23 Python
python学习入门细节知识点
Mar 29 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
对Python中内置异常层次结构详解
Oct 18 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
从0开始的Python学习016异常
Apr 08 Python
Django model update的多种用法介绍
Mar 28 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 Python
python实现扑克牌交互式界面发牌程序
Apr 22 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
destoon数据库表说明汇总
2014/07/15 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
一个简单的js树形菜单
2011/12/09 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
BootStrap selectpicker
2016/06/20 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
药学专业大学生自荐信
2013/09/28 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
初中英语课后反思
2014/04/25 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
2014年消防工作总结
2014/11/21 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
老公保证书
2015/01/17 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
MySQL如何解决幻读问题
2021/08/07 MySQL
python3 字符串str和bytes相互转换
2022/03/23 Python