我认为这是有道理的,因为你numpy
通过明星导入间接进入范围.
>>> import numpy as np >>> [0.0,0.0]/0 Traceback (most recent call last): File "<ipython-input-3-aae9e30b3430>", line 1, in <module> [0.0,0.0]/0 TypeError: unsupported operand type(s) for /: 'list' and 'int' >>> [0.0,0.0]/np.float64(0) array([ nan, nan])
当你做到了
from matplotlib.pylab import *
它拉进来了numpy.sum
:
>>> from matplotlib.pylab import * >>> sum is np.sum True >>> [0.0,0.0]/sum([0.0, 0.0]) array([ nan, nan])
您可以通过标识测试此 nan
对象(nan
通常不是唯一的)在列表中,但如果您在其中尝试array
它似乎通过相等性进行测试,并且nan != nan
:
>>> nan == nan False >>> nan == nan, nan is nan (False, True) >>> nan in [nan] True >>> nan in np.array([nan]) False
你可以使用np.isnan
:
>>> np.isnan([nan, nan]) array([ True, True], dtype=bool) >>> np.isnan([nan, nan]).any() True
您应该使用该math
模块。
>>> import math >>> math.isnan(item)