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字典操作简明总结
Apr 13 Python
简介Python中用于处理字符串的center()方法
May 18 Python
Python中字典的基础知识归纳小结
Aug 19 Python
浅谈python标准库--functools.partial
Mar 13 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
简单了解django索引的相关知识
Jul 17 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
Flask框架 CSRF 保护实现方法详解
Oct 30 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
Python如何对XML 解析
Jun 28 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 Python
Python基础之函数嵌套知识总结
May 23 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函数strip_tags的一个bug浅析
2014/05/22 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
Web开发之JavaScript
2012/03/29 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
本科生导师推荐信范文
2014/05/18 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
小学毕业感言200字
2015/07/30 职场文书
2016年母亲节寄语
2015/12/04 职场文书
创业计划书之家教托管
2019/09/25 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
python 实现的截屏工具
2021/05/08 Python
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
Python中的程序流程控制语句
2022/02/24 Python
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js