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字典操作简明总结
Apr 13 Python
在Python中使用itertools模块中的组合函数的教程
Apr 13 Python
Django验证码的生成与使用示例
May 20 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
Python csv文件的读写操作实例详解
Nov 19 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 Python
如何使用pdb进行Python调试
Jun 30 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 得到根目录的 __FILE__ 常量
2008/07/23 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
python访问sqlserver示例
2014/02/10 Python
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Python基于DES算法加密解密实例
2015/06/03 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
Python爬虫文件下载图文教程
2018/12/23 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
编辑个人求职信范文
2013/09/21 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
文明礼仪事迹材料
2014/01/09 职场文书
作风转变心得体会
2014/09/02 职场文书
检讨书怎么写
2015/05/07 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技