处理无穷大和NaN

有时候我们面对的浮点数是无穷大,负无穷大或者NaN(根本不是一个数),并且我们需要对它们进行判断测试

在Python中实际上并没有这样特殊的语法来表示这些特殊的浮点数值,但是我们可以使用float()函数来创建:

>>>


如果你想要检测是否出现了这些值,我们可以用math.isinf()和math.isnan()函数来进行检查。如果需要获得有关于这些浮点数值的详细信息,可以参考一下IEEE 754规范:

IEEE 754 - Wikipediaen.wikipedia.org


python 判断对象是否为json对象 python判断为nan_浮点数


有时候,无穷大值会在数学计算中传播:

>>>


但是,有些特定的操作可能会导致未定义行为并产生NaN结果:

>>>


并且,NaN会通过所有的操作进行传播,并且不会引发异常。并且,它有一个很有意思的特性就是它们在做比较的时候从来不会被判定为相等,正因为如此,唯一安全的检测NaN的方式就是使用函数math.isnan().相关程序代码如下:

def


有关于分数的计算

使用fractions模块可以用来解决涉及分数计算的问题:

from


在命令行下是这个样子的:

>>>


处理大型数组的计算

有时候我们需要对大型的数据集进行计算,NumPy库是最好的选择,它的主要特性就是为Python提供了一个数组对象,咱举个例子:

#使用一般数组


发现没有?有关数组的几个基本数学运算在行为上都有所不同,特别是numpy在进行标量运算的时候就是针对逐个元素进行计算的,并且,当两个元素都是数组的时候,Numpy数组会针对数组的所有元素进行计算,并产生出新的数组作为结果。此外,Numpy也提供了一些“通用函数”的集合,它们也可以对数组进行操作,它们都是通过math模块里的对应函数所替代的。比如我们想创建一个1000 x 1000的二位浮点数组

>>>


在IDE上是这个样子的:

import