【发布时间】:2012-07-26 23:58:05
【问题描述】:
我有一个代码,包括涉及无穷大的模运算,
例如a%numpy.inf。
我期望得到零,代码在我的旧电脑上运行良好。
但是,我现在在我的新电脑上安装了 python、numpy,操作给出了NaN
你知道如何让a%numpy.inf 为零吗?
【问题讨论】:
-
为什么需要这个?在数学上,
a % infinity应该等于a(因为任何数除以无穷大的余数将是那个数)或NaN(因为除以无穷大是未定义的)。更改代码以处理这个新结果可能会更好。 -
@SamMussmann 不对,任何数除以无穷大的余数不会是那个数,2/infinity 是一个不确定性,所以,
a%numpy.inf是NaN是正确的。 -
@levi:为了方便,我们通常会扩展我们的数字字段以包含 +/-inf,并定义操作以提供最有用的结果。将 2/inf 定义为 0 并将 2 % inf 定义为 2 没有任何问题。类似的事情已经用浮点完成:例如,尝试在 Python 控制台输入
print 1e500, 2.0/1e500, 2.0 % 1e500。 -
@DSM 是对的,但我的意思是“数学上”。
-
@levi:我的意思是,即使是“数学上”,也可以始终如一地做到这一点。它被称为extended real number line,R 与 +/- inf 和阶拓扑形成 R 的两点紧化。