[英]Why does “np.inf // 2” result in NaN and not infinity?
我有点失望np.inf // 2
评估为np.nan
而不是np.inf
,就像正常除法的情况一样。
我是否有理由错过为什么nan
是比inf
更好的选择?
楼层划分是根据模数定义的,两者都构成了 divmod 操作的一部分。
二进制算术运算
底除法和取模运算符通过以下恒等式连接:
x == (x//y)*y + (x%y)
。 楼层除法和取模也与内置的 function divmod():divmod(x, y) == (x//y, x%y)
连接。
对于x = inf
,这个等式不能成立——余数inf % y
是未定义的——使得inf // y
模棱两可。 这意味着nan
至少与inf
一样好。 为简单起见, CPython 实际上只实现了 divmod 并通过删除部分结果来派生 // 和 % ——这意味着//
从 divmod 继承了nan
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.