2017-05-04 68 views
2

爲什麼答案是浮點數?我認爲它應該是一個整數。無符號和有符號數的numpy總和成爲浮點數

>>> import numpy as np 
>>> np.uint64(12) 
12 
>>> np.uint64(12) + int(4) 
16.0 
>>> 
+0

這肯定是出乎意料的。 –

+1

那麼,至少結果與'np.promote_types(np.uint64,np.int)'一致。我在github上發現了一個[相關問題](https://github.com/numpy/numpy/issues/5745) –

回答

1

根據最近的reddit post

這是Numpy函數設計用於爲整個輸入數據範圍返回一致值的方式。

16位無符號和符號整數將融入INT32,因此

>>> np.uint16(4) + np.int16(5) 
9 

然而,對於UINT64和Int64的,將適合所有可能的值最小的數據類型是float64。

相關問題