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