使用我无法理解的 numpy.nan 时,我遇到了一种奇怪的行为。这是一个最小的例子:
from numpy import nan
def _bool3key(x):
"""
Defines the keys used to order the list.
The only allowed values are True, False, 1,0 and numpy.nan.
"""
return _bool3key.__logic_sort__[x]
_bool3key.__logic_sort__ = {0:-1, nan:0 , 1:1}
def and3(*args):
return min(*args,key=_bool3key)
def f(x):
"""long function that produces in output a vector containing only 0, nan and 1s.
pass #
有时 and3 函数会失败,尽管在 f(x) 返回的向量中只有 0、nan 或 1 个值:原因是 nan 不是 numpy.nan 类型...
例如v = f(x)
产生了一个向量[nan,nan]
。但是,如果我尝试输入:
v[0] is nan
我得到False
(这是导致 and3 不起作用的原因);奇怪的v[1] is nan
是True
。
是什么导致了这种行为?如何在我的and3
函数中正确使用 nan 值?