2017-04-04 25 views
0

numpy.uint64(numpy.sum()によって出力される)をDecimalモジュールで精度を失うことなく小数点に変換しようとしています。Python Decimalモジュールがuint64で動作しない

>>> from decimal import Decimal 
>>> import numpy as np 
>>> 
>>> sum = np.sum(1000000000000000000) 
>>> type(sum) 
<type 'numpy.int64'> 
>>> Decimal(sum) 
Decimal('1000000000000000000') 
>>> 
>>> sum = np.sum(1000000000000000000000) 
>>> type(sum) 
<type 'long'> 
>>> Decimal(sum) 
Decimal('1000000000000000000000') 
>>> 
>>> sum = np.sum(10000000000000000000) 
>>> type(sum) 
<type 'numpy.uint64'> 
>>> Decimal(sum) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/decimal.py", line 657, in __new__ 
    raise TypeError("Cannot convert %r to Decimal" % value) 
TypeError: Cannot convert 10000000000000000000 to Decimal 
+0

最初の変換であってもエラーが発生しました。Python3.5では 'TypeError:numpy.int64からDecimalへの変換はサポートされていません ' – kmario23

答えて

1

decimal.Decimalがnumpyの入力を理解していないので、numpy.uint64decimal.Decimalを呼び出す前にitem methodでPythonのスカラーに変換します。私の場合は

Decimal(np.sum(whatever).item()) 
0

、ちょうどパンダ0.20.3から0.21にアップグレードそれを修正しました

関連する問題