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 相关文章推荐
haskell实现多线程服务器实例代码
Nov 26 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
Python 装饰器使用详解
Jul 29 Python
Python科学画图代码分享
Nov 29 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
对Python3.6 IDLE常用快捷键介绍
Jul 16 Python
python爬虫超时的处理的实例
Dec 19 Python
python实现复制文件到指定目录
Oct 16 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
Python多个装饰器的调用顺序实例解析
May 22 Python
python实现简单的聊天小程序
Jul 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防注
2007/01/15 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Python进程间通信用法实例
2015/06/04 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
使用python模拟高斯分布例子
2019/12/09 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
自动化专业个人求职信范文
2013/12/30 职场文书
保险公司演讲稿
2014/09/02 职场文书
群众路线对照检查材料
2014/09/22 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
大专护理专业自荐信
2015/03/25 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
2016教师节感恩话语
2015/12/09 职场文书