numpy判断数值类型、过滤出数值型数据的方法


Posted in Python onJune 09, 2018

numpy是无法直接判断出由数值与字符混合组成的数组中的数值型数据的,因为由数值类型和字符类型组成的numpy数组已经不是数值类型的数组了,而是dtype='<U11'。

1、math.isnan也不行,它只能判断float("nan"):

>>> import math 
>>> math.isnan(1) 
False 
>>> math.isnan('a') 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
TypeError: a float is required 
>>> math.isnan(float("nan")) 
True 
>>>

2、np.isnan不可用,因为np.isnan只能用于数值型与np.nan组成的numpy数组:

>>> import numpy as np 
>>> test1=np.array([1,2,'aa',3]) 
>>> np.isnan(test1) 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could 
 not be safely coerced to any supported types according to the casting rule ''sa 
fe'' 
>>> test2=np.array([1,2,np.nan,3]) 
>>> np.isnan(test2) 
array([False, False, True, False], dtype=bool) 
>>>

解决办法:

方法1:将numpy数组转换为python的list,然后通过filter过滤出数值型的值,再转为numpy, 但是,有一个严重的问题,无法保证原来的索引

>>> import numpy as np 
>>> test1=np.array([1,2,'aa',3]) 
>>> list1=list(test1) 
>>> def filter_fun(x): 
... try: 
...  return isinstance(float(x),(float)) 
... except: 
...  return False 
... 
>>> list(filter(filter_fun,list1)) 
['1', '2', '3'] 
>>> np.array(filter(filter_fun,list1)) 
array(<filter object at 0x0339CA30>, dtype=object) 
>>> np.array(list(filter(filter_fun,list1))) 
array(['1', '2', '3'], 
 dtype='<U1') 
>>> np.array([float(x) for x in filter(filter_fun,list1)]) 
array([ 1., 2., 3.]) 
>>>

方法2:利用map制作bool数组,然后再过滤数据和索引:

>>> import numpy as np
>>> test1=np.array([1,2,'aa',3])
>>> list1=list(test1)
>>> def filter_fun(x):
... try:
...  return isinstance(float(x),(float))
... except:
...  return False
...
>>> import pandas as pd
>>> test=pd.DataFrame(test1,index=[1,2,3,4])
>>> test
 0
1 1
2 2
3 aa
4 3
>>> index=test.index
>>> index
Int64Index([1, 2, 3, 4], dtype='int64')
>>> bool_index=map(filter_fun,list1)
>>> bool_index=list(bool_index) #bool_index这样的迭代结果只能list一次,一次再list时会是空,所以保存一下list的结果
>>> bool_index
[True, True, False, True]
>>> new_data=test1[np.array(bool_index)]
>>> new_data
array(['1', '2', '3'],
 dtype='<U11')
>>> new_index=index[np.array(bool_index)]
>>> new_index
Int64Index([1, 2, 4], dtype='int64')
>>> test2=pd.DataFrame(new_data,index=new_index)
>>> test2
 0
1 1
2 2
4 3
>>>

以上这篇numpy判断数值类型、过滤出数值型数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入理解Python变量与常量
Jun 02 Python
Python中的浮点数原理与运算分析
Oct 12 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
使用python3+xlrd解析Excel的实例
May 04 Python
Python动态导入模块的方法实例分析
Jun 28 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
python创建学生成绩管理系统
Nov 22 Python
Python几种常见算法汇总
Jun 02 Python
python3使用diagrams绘制架构图的步骤
Apr 08 Python
python实现简单倒计时功能
Apr 21 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 #Python
pandas 小数位数 精度的处理方法
Jun 09 #Python
Numpy数据类型转换astype,dtype的方法
Jun 09 #Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 #Python
浅谈DataFrame和SparkSql取值误区
Jun 09 #Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 #Python
pandas Dataframe行列读取的实例
Jun 08 #Python
You might like
PHP上传文件参考配置大文件上传
2015/12/16 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python如何实现复制目录到指定目录
2020/02/13 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
Python使用Pygame绘制时钟
2020/11/29 Python
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
总经理岗位职责
2013/11/09 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
银行给客户的感谢信
2015/01/23 职场文书
团支部书记竞选稿
2015/11/21 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript