以为python的nan是专有的类型,但是JS、C++都有这个类型的,怪写的代码bug太少,没遇到

None 和 nan

type(None)-----------Nonetype
type(Nan)-------------float

判断nan

这里出了7个判断的方法,但实际有效的只有3个,还有半有效的~
后四个方法则是只有np.nan可以判断自己的类型,其他三种没办法自己判断自己。
也就是说:
np.nan is np.nan是True
float(‘nan’) is float(‘nan’) 是False,另外两个也是False
为什么呢?
Nan 全称是Not a Number,是IEEE754标准规定的双精度浮点小数类型的特殊值。所以看d的类型,即使np.nan,返回也是float类型。

import pandas as pd
import numpy as np
import math
from decimal import Decimal
'''由结果看,前两个是万能的'''
'''第三个对精度高的Decimal行不通'''
def isNan_1(a):return math.isnan(a)
def isNan_2(a):return a != a
def isNan_3(a):if(str(a) == 'nan'):return Trueelse:return False
def isNan_4(a):return a is float('nan')
def isNan_5(a):return a is Decimal('nan')
def isNan_6(a):return a is np.nan
def isNan_7(a):return a is np.float64('nan')

尝试了四种类型,float(‘nan’) np.float64(‘nan’) Decimal(‘nan’) np.nan
从结果中发现,前两个函数是百分百正确的,而第三种则是对 float 和np.nan有效果,对精度较高的Decimal无效。而我也只能是凑巧找到了该方法。

a = float('nan')
type_str = "float('nan')"
print("%s type is \t \t \t \t %s\n"%(type_str, type(a)))
print("math.isnan(%s)  \t \t %s\n"%(type_str, isNan_1(a)))
print("%s != %s \t \t %s\n"%(type_str, type_str, isNan_2(a)))
print("%s == 'nan' \t \t \t %s\n"%(type_str,isNan_3(a)))
print("%s is float('nan')  \t \t %s\n"%(type_str,isNan_4(a)))
print("%s is Decimal('nan') \t \t %s\n"%(type_str,isNan_5(a)))
print("%s is np.nan \t \t \t %s\n"%(type_str,isNan_6(a)))
print("%s is np.float64('nan')  \t %s\n"%(type_str,isNan_7(a)))
float('nan') type is                <class 'float'>math.isnan(float('nan'))               Truefloat('nan') != float('nan')       Truefloat('nan') == 'nan'                 Truefloat('nan') is float('nan')        Falsefloat('nan') is Decimal('nan')         Falsefloat('nan') is np.nan               Falsefloat('nan') is np.float64('nan')      False
np.float64('nan')  type is              <class 'numpy.float64'>math.isnan(np.float64('nan'))                  Truenp.float64('nan') != np.float64('nan')         Truenp.float64('nan') == 'nan'                    Truenp.float64('nan') is float('nan')               Falsenp.float64('nan') is Decimal('nan')        Falsenp.float64('nan') is np.nan                  Falsenp.float64('nan') is np.float64('nan')     False
Decimal('nan')  type is                 <class 'decimal.Decimal'>math.isnan(Decimal('nan'))                   TrueDecimal('nan') != Decimal('nan')           TrueDecimal('nan') == 'nan'                   FalseDecimal('nan') is float('nan')             FalseDecimal('nan') is Decimal('nan')           FalseDecimal('nan') is np.nan                     FalseDecimal('nan') is np.float64('nan')        False
np.nan type is                <class 'float'>math.isnan(np.nan)               Truenp.nan != np.nan               Truenp.nan == 'nan'                 Truenp.nan is float('nan')        Falsenp.nan is Decimal('nan')         Falsenp.nan is np.nan               Truenp.nan is np.float64('nan')       False

【python】如何判断nan相关推荐

  1. python判断nan格式_关于Python中Inf与Nan的判断问题详解

    大家都知道 在Python 中可以用如下方式表示正负无穷: float("inf") # 正无穷 float("-inf") # 负无穷 利用 inf(infi ...

  2. pytorch判断NaN

    目录 pytorch判断NaN python判断nan: c++判断nan: pytorch判断NaN You can always leverage the fact that nan != nan ...

  3. python怎样判断一个文件是否存在_python如何判断一个文件是否存在

    python如何判断一个文件是否存在 发布时间:2020-09-23 11:38:42 来源:亿速云 阅读:82 作者:Leah python如何判断一个文件是否存在?针对这个问题,这篇文章详细介绍了 ...

  4. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  5. python代码判断两棵二叉树是否相同

    python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...

  6. python代码判断指定日期是当前年的第多少天

    python代码判断指定日期是当前年的第多少天 #python代码判断指定日期是当前年的第多少天 #不适用标准库 def is_leap_year(year):"""判断 ...

  7. Python 字符串判断字母 数字 大小写

    Python 字符串判断 以下代码演示了Python字符串的判断: 实例 # Filename : test.py # author by : www.runoob.com # 测试实例一 print ...

  8. cuda 判断nan 处理办法

    目录 判断方法: cu 判断nan的方法示例: cuda nan处理方法,自定义函数: nms处理nan的方法:

  9. python怎么判断一个文件是否存在-利用Python如何判断一个文件是否存在

    通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...

最新文章

  1. pytorch model.train() 开启batchnormalize 和 dropout model.eval() 则会关闭dropout
  2. BOOKS STORE OPENCART 自适应主题模板 ABC-0093
  3. 2021最新报告:一文洞察智慧金融发展现状
  4. bat文件设置dns服务器,.bat文件设置IP、DNS
  5. Java 虚拟机部分面试题
  6. CentOS7 搭建Kafka消息队列环境,以及Python3操作Kafka Demo
  7. 硬件基础知识(6)---电容分类
  8. Appium appium android 6.0+ 微信 @driver.available_contexts 返回 webview_undefined 问题
  9. 顶尖中文大学计算机专业课程体系
  10. 检测远程主机上的某个端口是否开启——telnet命令
  11. 前端开发中最常用的JS代码片段
  12. 拓端tecdat|Python用稀疏、高斯随机投影和主成分分析PCA对MNIST手写数字数据进行降维可视化
  13. java pdf 页面 拼接_如何使用Java平铺PDF文档中的页面内容?
  14. 控制Tello无人机扫描条形码
  15. linux内存使用率如何查看,linux内存使用率 linux查看内存
  16. 向量积计算三角形面积
  17. MATLAB必看书籍推荐
  18. 【读书笔记】之蔡康永的说话之道2
  19. Vscode怎么进行文件对比-Vscode文件对比的方法介绍
  20. Sentinel限流熔断

热门文章

  1. 美团后台开发两轮面经(已offer,题目很全)
  2. 最新云计算机室60座配置,64位语音实验室建设参数需求
  3. mysql1085报错:ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The tabl
  4. jq获取原元素 class
  5. SRS流媒体服务器SDP解析流程
  6. 本地存储待办事项(在待办事项上进行改进)
  7. 史上最好听的英文神曲歌
  8. Android实现新浪微博SSO授权登录分享文字图片等功能(WEIBO_ANDROID_SDK V2.3.0 )
  9. 2021011029wxy-实验8数据更新
  10. 防火墙和系统安全防护及优化