认识python中的inf和nan

Python012

认识python中的inf和nan,第1张

认识python中的inf和nan

python中的正无穷或负无穷,使用float("inf")或float("-inf")来表示。

这里有点特殊,写成:float("inf"),float("INF")或者float('Inf')都是可以的。

当涉及 >和 <比较时,所有数都比无穷小float("-inf")大,所有数都比无穷大float("inf")小。

相等比较时,float("+inf")与float("+inf")、float("inf")三者相等。即:

同样地,float("-inf") == float("-inf") 返回也是True。

简单的加,减,乘操作,还是会返回无穷。

特别地,0 * float('inf') 结果为:nan

float('inf') / float('inf') 结果为:nan

float('inf') - float('inf') 结果为:nan

float('-inf') - float('-inf') 结果也为:nan

nan代表Not A Number(不是一个数),它并不等于0

因为nan不是一个数,所以相关计算都无法得到数字。

所有涉及nan的操作,返回的都是nan。

结果都是:nan

比较操作时,返回的都是False

特别注意两个float('nan')并不相等!

python中可以用math.isinf()与math.isnan()来判断数据是否为inf或nan。

numpy中也有相类似的方法可用来判断数据。

动手测试题:

0 / float('inf') == 0 / float('-inf') 结果是True 还是False?

参考资料:

Python 关于正负无穷float(‘inf’)的一些用法

https://blog.csdn.net/shennongzhaizhu/article/details/51997887

Stackoverflow.com上的问答:What is inf and nan?

https://stackoverflow.com/questions/17628613/what-is-inf-and-nan

说明你的样本数据中有nan值,通常是因为原始数据中包含空字符串或None值引起的。

解决办法是把样本数据中包含nan值的数据剔除,

或者如果样本数据都是数值的话可以把nan值都改成0。