Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用numpy.NAN初始化数组_Python_Arrays_Numpy - Fatal编程技术网

Python 使用numpy.NAN初始化数组

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初始化单个变量,

使用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初始化单个变量,并将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