python [吐槽]关于nan类型时遇到的问题
今天在用写一段求和的代码时候,发现最后返回的是nan的结果,这段循环求和代码依次调用了三个函数,于是依次打印这三个函数的返回值,发现其中一个函数的返回值为nan,原来是因为这段函数里面没有相似的用户,所有返回结果为nan,于是我就想加一个判断条件,当结果为空时,跳过本次循环:
if res==nan:
continue
本以为加上这一句话就可以了,于是重新运行了一下,oh,shit!!!!结果没有任何变化,以前是nan的还是一样没有跳过。于是我想到了我用到了Python的numpy库,会不会是numpy下的nan类型呢,于是修改一下判断条件:
if res==np.nan:
continue
重新运行!还是不对。
找到原函数的位置,打印一下产生nan类型:
>>print(type(res))
<class 'numpy.float64'>
发现属于numpy.float64类型,没办法,我想要不把原来函数的返回值改为float型吧,于是找到原函数,修改:
return float(res)
然后在循环求和的代码段中加上:
if res==nan:
continue
运行!gg 还是不行!
没办法。为了找到真凶,我只能拿出res挨着测试:
>>res=np.nan
False >>res=nan
False >>res='NaN'
False >>res=float('NaN')
False >>> isNaN(res)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'isNaN' is not defined
天哪!这个nan到底是什么类型!
最后突然想到了py自带的math库下面好像有一个判断nan的函数——isnan,抱着必死的心态,试了试:
>>from math import isnan >>isnan(res)
True
Wooooooo!True! 终于找到办法了!天哪!终于解决了,这一个小问题纠结了我一中午。。。
技术小白,遇到问题,多尝试!
python [吐槽]关于nan类型时遇到的问题的更多相关文章
- python None 和 NaN
python原生的None和pandas, numpy中的numpy.NaN尽管在功能上都是用来标示空缺数据.但它们的行为在很多场景下确有一些相当大的差异.由于不熟悉这些差异,曾经给我的工作带来过不少 ...
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- 享受Python和PHP动态类型检查语言的快感
前言 写这文章的时候特地查了资料,以确保我没有说错关于Python和PHP的类型机制. 所以这里放一张图,关于强弱类型与动态/静态类型检查的区分 从分类上看,PHP属于弱类型语言,而Python属于强 ...
- python中对象、类型和元类之间的关系
在python中对象.类型和元类构成了一个微妙的世界. 他们有在这个世界里和平共处,相辅相成.它们遵循着几条亘古不变的定律: 1.python中无处不对象 2.所有对象都有三种特性:id.类型.值 3 ...
- 顺序表的原理与python中的list类型
数据是如何在内存中存储的? 在32位的计算机上,1个字节有8位,内存寻址的最小单位就是字节.假设我们有一个int类型的值,它从0x10开始,一个int占据4个字节,则其结束于0x13. 那么数据类型有 ...
- Python学习之数组类型一:
Python学习之数组类型一: Numpy中的向量与矩阵: 1.创建: 向量.矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] ), 矩阵是M=array( [[ ]] ...
- 有趣的NaN类型
在学习Java集合的时候遇到了Float.isNaN(float)函数,点进去一看就不理解了,函数实现如下: public static boolean isNaN(float v) { return ...
- python在处理CSV文件时,字符串和列表写入的区别
概述 Python在处理CSV文件时,如果writerow的对象是<type 'unicode'>字符串时,写入到CSV文件时将会出现一个字符占一个单元格的情况: 但是将字符串转换为列表类 ...
- Python中的集合类型分类和集合类型操作符解析
集合类型 数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素(set elements). Python把这个概念引入到它的集合类型对象里.集合对象是一组无 ...
随机推荐
- NSString和data转换
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NS ...
- hdu 2094
ps: 原本听说用set容器做是最好的...然而我并不懂..就用C语言做了...就是先输入赢得一组和输的一组,然后把重复的删掉,再比较赢得一组里没有出现在输的一组里的人数,如果是1就是YES,其他就是 ...
- 一些需要注意的C知识点
1.数组在作为参数传递到函数时,会退化为一个指针.也就是说,一旦进入函数内部,数组已经变为了一个指针.其实是在参数传递的时候进行了浅拷贝,编译器会声明一个指针指向该数组,在函数内部所有的操作都是对该临 ...
- iOS开发之修改动画对象的元素属性
步骤:1.使用single view application创建新的项目 2.在.h文件中使用UIimageview创建两个图片实例对象,使用UIDynamicAnimator创建动画对象 3.在.m ...
- Qt发送HTTP请求
http://hi.baidu.com/cmdmac/item/c45b9f0fb0d0938802ce1bbd 最近在搞QT跟服务器交互的东西,自然少不了发送和接受HTTP请求.在网上找了一些资料知 ...
- 大型HashMap
看到一篇评估大型HashMap的文章,备份几个Collections库. 原文:Large HashMap overview: JDK, FastUtil, Goldman Sachs, HPPC, ...
- HDOJ-三部曲一(搜索、数学)- A Knight's Journey
A Knight's Journey Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ...
- TableView--通讯录--开篇
一,需求图:
- asp登陆例子,asp,mssql,登陆
login.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="log ...
- NSNumber 、 NSValue 、 日期处理 、 集合类 、 NSArray(一)
1 基本数据类型的封装 1.1 问题 我们所学的所有基本数据类型,如int.float.double.char等,都不是对象,不能向它们发送消息.然而,在Foundation中的许多类,如NSArra ...