2012-06-11 2 views
1

numpy.average를 사용하여 십진수 목록의 가중치 평균을 취하려고합니다. 그러나 TypeError를 받고 있습니다. 예를 들어, 다음을 고려하십시오.파이썬에서 numpy를 사용하여 십진수 목록의 가중 평균을 취하는 방법이 있습니까?

>>> 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와를 사용하여 값의 정밀도를 잃지 않고 진수 번호 목록의 가중 평균을합니까?

+1

어, 당신은 당신이 [_weighted_ 평균]을 요구하고 있다는 확신 (http://en.wikipedia.org/wiki/Weighted_mean)? 그렇다면 각각의 해당 값에 대해 가중치가 필요합니다. 산술 평균을 얻으려고하는 것 같습니다. – voithos

+0

또한보십시오 : [numpy array with dtype Decimal?] (http://stackoverflow.com/a/7772386/222914) –

+0

정말 소수점 값으로 작업해야하는 경우 numpy는 당신을위한 도구가 아닙니다. –

답변

2

ERR, 고전적인 방식 ...

>>> sum((decimal.Decimal(1), decimal.Decimal(2)))/2 
Decimal('1.5') 
관련 문제