[英]Weird findings initializing the array with numpy.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為numpy.NAN為True。 將NAN分配給數組時會發生什么?
還有一個問題是,當該花樣中的某些元素是NAN時,我如何將它們與其他元素區分開? 非常感謝!
是NaN。 只是, is
不工作,你認為它有與NumPy陣列的方式做。 分配時
a[:] = numpy.NAN
NumPy的實際上不填寫a
與該參考numpy.NAN
對象。 而是使用C級的NaN值將雙精度值填充到數組中。
然后,當您使用a[0]
訪問數組元素時,NumPy沒有用於初始化該單元格的原始對象的記錄。 它只是具有數值。 它必須構造一個新的Python對象來包裝該值,並且新包裝器與numpy.NAN
。 因此, is
檢查返回False
。
需要注意的是一般,用比較數字is
一個不好的想法。 通常,您想要的是==
,以比較它們的數值。 但是,對於NaN, ==
也會返回False
,因此您需要的是numpy.isnan
:
>>> numpy.isnan(a[0])
True
>>> numpy.isnan(a)
array([ True, True], dtype=bool)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.