python对数组缺失值进行填充
1. 两个常用的函数
1.1 np.nonzero()
np.nonzero()函数返回数组中不为False(0)的元素对应的索引
a = np.array([1,2,0,3,1,0])
print(np.nonzero(a)) >>(array([0, 1, 3, 4], dtype=int64),)
#返回数组中不为0元素的索引数组
a = np.array([1,2,0,3,1,0])
print(np.nonzero(a)[0]) >>[0 1 3 4 5 7]
#这里要注意使用的时候如果只需要索引数组,需要在后面加上[0],这样就只是返回索引数组
#可以和上面对比来看
1.2 np.isnan()
np.isnan()函数判断一个数组各个元素是否为nan,并返回相同维度对应的bool数组
a = np.array([1,2,0,np.nan,3,1,0,np.nan])
print(np.isnan(a)) >>[False False False True False False False True]
#返回对数组进行空值检测的结果
类似的还有np.~isnan()函数,顾名思义就是实值检测,对于非nan元素返回true,nan元素返回false,与isnan()函数刚好相反
2. 实现一个缺失值填充函数
在函数中我们通过上述函数实现计算同一特征非空数据的均值,并以此填充哪些空缺值
# 加载包含NaN的数据集
# 用平均值代替缺失值
def replaceNaNWithMean():
#载入数据
datMat=loadDataSet('secom.data',' ')
#获取特征维度
numFeat = shape(datMat)[1]
#遍历数据集每一个维度
for i in range(numFeat):
#利用该维度所有非NaN特征求取均值
#nonzero返回非空元素的索引
#isnan和~isnan返回数组元素是否对应为空的True or False数组
meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i])
#将该维度中所有NaN特征全部用均值替换
#.A将matrix转化为ndarray,然后~isnan()获得对应bool数组
#再通过nonzero()得到所有不为nan数据的索引数组
#也即第i个特征不为nan的所有元素的索引,最后通过mean对这些元素求出平均值
datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal
#最后再用计算出来的平均值填充空值
return datMat #最后返回用平均值填充空缺值后的数组
python对数组缺失值进行填充的更多相关文章
- python数据结构-数组/列表/栈/队列及实现
首先 我们要分清楚一些概念和他们之间的关系 数组(array) 表(list) 链表(linked list) 数组链表(array list) 队列(queue) 栈(stack) li ...
- Python Pandas找到缺失值的位置
python pandas判断缺失值一般采用 isnull(),然而生成的却是所有数据的true/false矩阵,对于庞大的数据dataframe,很难一眼看出来哪个数据缺失,一共有多少个缺失数据,缺 ...
- python使用数组作为索引遍历数组
python使用数组作为索引遍历数组 觉得有用的话,欢迎一起讨论相互学习~Follow Me python使用数组作为索引遍历数组 import numpy as np a=np.arange(0,5 ...
- LeetCode初级算法的Python实现--数组
LeetCode初级算法的Python实现--数组 # -*- coding: utf-8 -*- """ @Created on 2018/6/3 17:06 @aut ...
- Python检查数组元素是否存在类似PHPisset()方法
Python检查数组元素是否存在类似PHP isset()方法 sset方法来检查数组元素是否存在,在Python中无对应函数,在Python中一般可以通过异常来处理数组元素不存在的情况,而无须事先检 ...
- Python 切分数组,将一个数组均匀切分成多个数组
Python 切分数组 将一个数组,均分为多个数组 代码 # -*- coding:utf-8 -*- # py3 def list_split(items, n): return [items[i: ...
- Python求解数组重新组合求最小值(优酷)
题目描述:题目:含有n个元素的整型数组,将这个n个元素重新组合,求出最小的数,如(321,3,32,) 最小数为321323 题目分析: 将数组中所有元素填充到个数相等,填充的数字为最后一位的数字,如 ...
- python创建数组的方法
一 直接定义法: 1.直接定义 matrix=[0,1,2,3] 2.间接定义 matrix=[0 for i in range(4)] print(matrix) 二 Numpy方法: Numpy内 ...
- Python虚拟机类机制之填充tp_dict(二)
填充tp_dict 在Python虚拟机类机制之对象模型(一)这一章中,我们介绍了Python的内置类型type如果要完成到class对象的转变,有一个重要的步骤就是填充tp_dict对象,这是一个极 ...
随机推荐
- SpringBoot启动流程分析
前景提示 @ComponentScan 的处理都放在org.springframework.context.annotation.ConfigurationClassParser#doProcess ...
- Python自学之路
2020年春节,受新型冠状病毒影响,整个春节假期,全国人民都在恐慌之中,为了避免大家上班相互传染,公司号召国家政策,开始上班日期延迟,在家呆的实在太无聊,突然感觉自己不能浪费这美好的时光,决定学习Py ...
- Arduino读取串口数据并进行字符串分割
String comdata = ""; int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0; voi ...
- [YOLO]《You Only Look Once: Unified, Real-Time Object Detection》笔记
一.简单介绍 目标检测(Objection Detection)算是计算机视觉任务中比较常见的一个任务,该任务主要是对图像中特定的目标进行定位,通常是由一个矩形框来框出目标. 在深度学习CNN之前,传 ...
- windows中git输错密码后不能修改问题
坑位 当使用git做代码管理的时候,如果仓库地址地选用的是https,在初始拉取代码时,需要输入账号和密码,如果不小心输错了,后续一直会验证失败,无法再重新更正账号信息 Why 因为git为了不让你每 ...
- ES6 之 Proxy
概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改. Proxy 可以理解在目标对象架设一个“拦截”层外界对该对象的访问都必须先通过这层拦截,因此提供了一种机制可以对外界的访问进行 ...
- XTU 1205 Range
还是五月湘潭赛的题目,当时就是因为我坑...连个银牌都没拿到,擦. 这个题目枚举区间是不可能的,明显是要考虑每个数对全局的影响,即找到每个数最左和最右能满足是最大的位置 以及 最小的时候,相乘即为该数 ...
- 七、React表单详解 约束性和非约束性组件 input text checkbox radio select textarea 以及获取表单的内容
一.约束性和非约束性组件: 非约束性组: MV: <input type="text" defaultValue="a" /> 这个 default ...
- springboot项目 线程消费队列注入报错误空指针
背景: 在调用阿里云隐私保护有一个通话记录的回执消息是一个消费线程队列,这个还别人告诉我的,因为我根本没有看出来哪里是个线程了,然后我就把它当成普通的代码拿到返回值以后然后插入数据库 可是我这边该加的 ...
- oracle将字符串根据特定字符串拆分为多个子字符串
将 字符串 '20180321-4768-4735261' 按‘-’ 拆分: 语法: INSTR()函数 1.用处: 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 2.语法格式: ...