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 10 Python
python使用threading获取线程函数返回值的实现方法
Nov 15 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
详解python读取和输出到txt
Mar 29 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
Python中Unittest框架的具体使用
Aug 27 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
Python生成器next方法和send方法区别详解
May 30 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php设计模式 Facade(外观模式)
2011/06/26 PHP
10 个经典PHP函数
2013/10/17 PHP
php使用websocket示例详解
2014/03/12 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
python plotly绘制直方图实例详解
2019/07/22 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
公务员的自我鉴定
2013/10/26 职场文书
药品采购员岗位职责
2014/02/08 职场文书
应用数学专业求职信
2014/03/14 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS