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文件和目录操作详解
Feb 08 Python
Python实现图片转字符画的示例
Aug 22 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
Python 编程速成(推荐)
Apr 15 Python
python简单区块链模拟详解
Jul 03 Python
Python 处理文件的几种方式
Aug 23 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
python 爬取豆瓣网页的示例
Apr 13 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
May 12 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
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
56.com视频采集接口程序(PHP)
2007/09/22 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python实现堆排序的方法详解
2016/05/03 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python实现批量图片格式转换
2020/06/16 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
python如何删除文件、目录
2020/06/23 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
回门宴新郎答谢词
2014/01/12 职场文书
一年级班主任感言
2014/03/08 职场文书
实习单位评语
2014/04/26 职场文书
工作说明书范文
2014/05/07 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
活动总结书怎么写
2015/05/11 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript