[英]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.