2017-10-05 39 views
0

我有值的大名單:的Python:幾何意味着** 1/N,如果過大

[23.22, 50.44 .... 32.53] 

後,我應該得到下一個值:

reduce(operator.mul, [Decimal(i) for i in list]) 

打印值 - 4.248649022193430909459625077E+583這值過大 ,但我有下一步的行動:

value**1/len(list) 

如果該列表是我不能得到的值非常大 - 在這種情況下可以得到幾何平均值嗎?

+1

'值** 1'是'value',所以'值** 1/LEN(列表)'只是'value/len(list)'。這可能不是你想寫的東西,但那是你寫的。 – khelwood

+0

@khelwood否))) – Lola

+0

看到這個答案:https://stackoverflow.com/a/43099751/107660 – Duncan

回答

6

代替項的乘法總和對數

geometric_mean = (a1 * ... * an) ** (1/n) = 
       = exp((log(a1) + .. + log(an))/n) 
+0

非常感謝你 – Lola