2

numpy.average; を使用して、10 進数のリストの加重平均を取得しようとしています。ただし、TypeError を受け取ります。たとえば、次のことを考えてみましょう。

>>> from decimal import *
>>> import numpy
>>> s = '1.00000001'
>>> l = []
>>> l.append(Decimal(s))
>>> l.append(Decimal(s))
>>> numpy.average(l)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/site-packages/numpy/lib/function_base.py", line 612
, in average
    avg = a.mean(axis)
TypeError: unsupported operand type(s) for /: 'Decimal' and 'float'

float に変換せずに numpy を使用して値の精度を失うことなく、10 進数のリストの加重平均を取るにはどうすればよいですか?

4

1 に答える 1

2

エラー、古典的な方法...

>>> sum((decimal.Decimal(1), decimal.Decimal(2))) / 2
Decimal('1.5')
于 2012-06-11T04:47:32.707 に答える