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实现定制交互式命令行的方法
Jul 03 Python
python实现定时播放mp3
Mar 29 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
Python如何操作office实现自动化及win32com.client的运用
Apr 01 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
python自动化之如何利用allure生成测试报告
May 02 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP个人网站架设连环讲(四)
2006/10/09 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
Weblogic的布署方式
2013/08/23 面试题
.NET方向面试题
2014/11/20 面试题
销售团队激励口号
2014/06/06 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL
Minikube搭建Kubernetes集群
2022/03/31 Servers