相关疑难解决方法(0)

为什么NaN不等于NaN?

相关的IEEE标准定义了一个数字常量NaN(不是数字),并规定NaN应该比较为不等于它自己.这是为什么?

我熟悉的所有语言都实现了这个规则.但它经常会导致严重的问题,例如当NaN存储在容器中时,NaN存在于正在排序的数据中等时的意外行为等.更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解NaN之前,令人惊讶的是他们增加了错误和混乱.

IEEE标准经过深思熟虑,因此我确信NaN的比较与其本身相同是很糟糕的.我只是想不通它是什么.

language-agnostic floating-point nan ieee-754

114
推荐指数
5
解决办法
3万
查看次数

在Python/numpy/pandas中有效地检查任意对象是否为NaN?

我的numpy数组用于np.nan指定缺失值.当我遍历数据集时,我需要检测这些缺失值并以特殊方式处理它们.

天真的我用过numpy.isnan(val),除非val不是支持的类型子集,否则效果很好numpy.isnan().例如,丢失的数据可能出现在字符串字段中,在这种情况下,我得到:

>>> np.isnan('some_string')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Not implemented for this type
Run Code Online (Sandbox Code Playgroud)

除了编写一个捕获异常并返回的昂贵包装器之外False,有没有办法优雅高效地处理这个问题?

python numpy pandas

90
推荐指数
3
解决办法
14万
查看次数

x[x!=x] 是什么意思?

我不明白这一行

lprobs[lprobs != lprobs] = torch.tensor(-math.inf).to(lprobs)
Run Code Online (Sandbox Code Playgroud)

没有评论,那么它是一些著名的 Python(或 PyTorch?)习语吗?有人可以解释它的含义,或者展示一种使意图更清晰的不同方式吗?

lprobs是一个pytorchTensor,它可以包含任何大小的浮点类型(我怀疑这段代码是否旨在支持 int 或复杂类型)。据我所知,Tensor 类不会覆盖该__ne__函数。

python python-3.x pytorch

4
推荐指数
1
解决办法
111
查看次数