簡體   English   中英

奇怪的發現用numpy.NAN初始化了數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM