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 urllib、urllib2、httplib抓取网页代码实例
May 09 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
Python tornado上传文件的功能
Mar 26 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
什么是Python中的顺序表
Jun 02 Python
Python爬取12306车次信息代码详解
Aug 12 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
jquery获取input输入框中的值
2019/11/13 jQuery
python3生成随机数实例
2014/10/20 Python
Python socket实现简单聊天室
2018/04/01 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
如何基于python操作json文件获取内容
2019/12/24 Python
五种Python转义表示法
2020/11/27 Python
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
汽车维修专业个人求职信范文
2014/01/01 职场文书
小学生读书感言
2014/02/12 职场文书
《春天来了》教学反思
2014/04/07 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
给老师的一封感谢信
2015/01/20 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript