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编程中使用Pillow来处理图像的基础教程
Nov 20 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
Python中Scrapy爬虫图片处理详解
Nov 29 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
python实现txt文件格式转换为arff格式
May 31 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
详解Python中的编码问题(encoding与decode、str与bytes)
Sep 30 Python
Python实现简繁体转换
Jun 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实现MySQL更新记录的代码
2008/06/07 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
php多重接口的实现方法
2015/06/20 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
php和asp语法上的区别总结
2019/05/12 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
express框架下使用session的方法
2019/07/31 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
教师党员个人整改措施材料
2014/09/16 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
Python面向对象之内置函数相关知识总结
2021/06/24 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
mysql主从复制的实现步骤
2021/10/24 MySQL
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript