观察
np.nan < 0
False
np.array([np.nan]) < 0
array([False], dtype=bool)
然而
np.array([-1, np.nan]) < 0
//anaconda/envs/3.5/lib/python3.5/site-packages/ipykernel/__main__.py:1: RuntimeWarning: invalid value encountered in less if \__name\__ == '\__main\__':
array([ True, False], dtype=bool)
该错误意味着什么?
答案 0 :(得分:4)
这只是一个警告,而不是例外。 Numpy尝试提供帮助,并报告您的数组中有nan
。忽略它是安全的。如果警告本身困扰您(或您的用户),您可以压制它:
with np.errstate(invalid='ignore'):
np.less([np.nan, 0], 1)
但是,实际上不推荐这样做,因为它可以掩盖不太明显的问题,如果你需要在冗长的计算中找到nan
的来源,可以使调试更加困难。
请注意nan
的语义:nan > 0
,nan < 0
和nan < nan
,nan == nan
都是False
。
另请注意,在numpy中(与熊猫不同)nan
实际上意味着无效而不可用。