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标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
Python中list初始化方法示例
Sep 18 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
python3处理含有中文的url方法
May 10 Python
Python中的取模运算方法
Nov 10 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
pytorch 求网络模型参数实例
Dec 30 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
使用Pycharm分段执行代码
Apr 15 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获取表单所有复选框的值的方法
2014/08/28 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
Python 解析XML文件
2009/04/15 Python
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
如何在python中执行另一个py文件
2020/04/30 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
String是最基本的数据类型吗?
2013/06/13 面试题
历史系自荐信范文
2013/12/24 职场文书
大学军训感言200字
2014/02/26 职场文书
2014年双拥工作总结
2014/11/21 职场文书
2014年稽查工作总结
2014/12/20 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python