2017-05-04 14 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に関する関連issue](https://github.com/numpy/numpy/issues/5745)を見つけました。 –

答えて

1

最近のreddit postに基づいています。

これは、Numpy関数が入力データの全範囲に対して一貫した値を返すように設計されている方法です。

両方16ビットの符号なしと符号付き整数は、UINT64しかしながら従って、INT32に

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

に合うであろうと、すべての可能な値を適合する最小のデータ型INT64のfloat64です。

関連する問題