Python 使用numpy.NAN初始化数组
使用numpy.NAN初始化numpy数组时遇到一些问题,如下所示Python 使用numpy.NAN初始化数组,python,arrays,numpy,Python,Arrays,Numpy,使用numpy.NAN初始化numpy数组时遇到一些问题,如下所示 >>> import numpy >>> a = numpy.zeros(2) >>> a array([ 0., 0.]) >>> a[:] = numpy.NAN >>> a array([ nan, nan]) >>> a[0] is numpy.NAN False 为什么呢?我尝试使用NAN初始化单个变量,
>>> import numpy
>>> a = numpy.zeros(2)
>>> a
array([ 0., 0.])
>>> a[:] = numpy.NAN
>>> a
array([ nan, nan])
>>> a[0] is numpy.NAN
False
为什么呢?我尝试使用NAN初始化单个变量,并将var is numpy.NAN设置为True。将NAN分配给数组时会发生什么
另一个问题是,当数组中的某些元素为NAN时,我如何将它们与其他元素区分开来?非常感谢 这是一个南。只是
is
的工作方式与您认为的NumPy数组不同。当你分配
a[:] = numpy.NAN
NumPy实际上并不使用对NumPy.NAN
对象的引用填充a
。相反,它在C级别用带有NaN值的双精度数填充数组
然后使用[0]访问数组元素时,NumPy没有用于初始化该单元格的原始对象的记录。它只有数值。它必须构造一个新的Python对象来包装该值,而新的包装器与numpy.NAN
不同。因此,is
检查返回False
请注意,通常情况下,将数字与is
进行比较是一个坏主意。通常,您需要的是比较它们的数值。但是,=
也会为NaNs返回False
,因此您需要的是numpy.isnan
:
>>> numpy.isnan(a[0])
True
>>> numpy.isnan(a)
array([ True, True], dtype=bool)
这是一个南。只是
is
的工作方式与您认为的NumPy数组不同。当你分配
a[:] = numpy.NAN
NumPy实际上并不使用对NumPy.NAN
对象的引用填充a
。相反,它在C级别用带有NaN值的双精度数填充数组
然后使用[0]访问数组元素时,NumPy没有用于初始化该单元格的原始对象的记录。它只有数值。它必须构造一个新的Python对象来包装该值,而新的包装器与numpy.NAN
不同。因此,is
检查返回False
请注意,通常情况下,将数字与is
进行比较是一个坏主意。通常,您需要的是比较它们的数值。但是,=
也会为NaNs返回False
,因此您需要的是numpy.isnan
:
>>> numpy.isnan(a[0])
True
>>> numpy.isnan(a)
array([ True, True], dtype=bool)
尝试使用
numpy.isnan
。尝试使用numpy.isnan
。