NaN, Not a Number, 非数. 它即不是无穷大, 也不是无穷小, 而是python/numpy/... 觉得无法计算时返回的一个符号(自己的推测, 未考证(TODO)).

import numpy as np

无穷大减无穷大会导致NaN

a = np.infty
print a - a
nan
print a * a, a * a - a
inf nan

无穷大乘以0或无穷小或除以无穷大会导致NaN

print a * 0
nan
print a * 1/ a
nan
print a / a
nan
print a / 1
inf
print a / 1
inf

总结起来就是, 涉及到无穷大的四则运算, 若无法确定运算结果仍为无穷大, 那么运算结果就是一个NaN.

另外很明显的是:

有NaN参与的运算, 其结果也一定是NaN

b = np.nan
print b + 1
nan
print b - b
nan

NaN != NaN

print b == b
False

利用这个性质可以判断数组中是否含有NaN:

def has_nan(x):
test = x != x
return np.sum(test) > 0

也可以使用系统api:

import math
val = float('nan') if math.isnan(val):
print('Detected NaN')
import pdb; pdb.set_trace() # Break into debugger to look around

markdown由jupyter notebook生成. [notebook](https://github.com/dengdan/blog_posts/blob/master/python/NaN.ipynb)

最新文章

  1. jq仿淘宝放大镜插件
  2. 【leetcode】Simplify Path
  3. curl上传图片文件
  4. AOP PostSharp
  5. 向量时钟算法简介——本质类似MVCC
  6. Moqui学习之代码分析mantle priceServices.xml
  7. const 常引用
  8. Spring MVC - log4j 配置
  9. JavaScript入门介绍(二)
  10. 取代奶瓶Minidwep-gtk 破 WPA 全攻略
  11. c#抓取动态页面WebBrowser
  12. Foxit Reader(福昕PDF阅读器) v4.3.1.218 绿色专业版
  13. javascript 私有方法的实现
  14. Android设置对话框去除黑边
  15. 【alpha阶段】第十次Scrum Meeting
  16. QT多线程的使用
  17. Specified key was too long; max key length is 767 bytes解决方案
  18. OpenResty入门之使用Lua扩展Nginx
  19. shell脚本监控系统负载、CPU和内存使用情况
  20. Python全栈问答小技巧_1

热门文章

  1. 记录一次bug解决过程:规范变量名称和mybatis的使用以及代码优化
  2. go-使用 unsafe 修改 struct 中的 field 的值
  3. Servlet的生命周期及工作原理
  4. GJM : AlloyTouch实战--60行代码搞定QQ看点资料卡
  5. MyEclipse相关部署问题
  6. spring和struts2的整合的xml代码
  7. atom配置web开发环境
  8. 基于Nuclear的Web组件-Todo的十一种写法
  9. java中IO流异常处理
  10. git命令查看远程分支