2017-03-29 48 views
3

我不知道是否有任何簡單的方法來做幾何意義使用python,但不使用python包。如果沒有,是否有任何簡單的包來做幾何意義?Python:在Python中做幾何意義的簡單方法?

+1

是的,確實存在。 – timgeb

+0

那麼[這](https://wikimedia.org/api/rest_v1/media/math/render/svg/026cae6801f672b9858d55935ec7397183dc3a36)是公式。什麼不清楚? –

+0

https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.stats.gmean.html#scipy.stats.gmean –

回答

14

的gemetric平均值的計算公式爲:

geometrical mean

所以,你可以隨便寫一個算法,如:

import numpy as np 

def geo_mean(iterable): 
    a = np.array(iterable) 
    return a.prod()**(1.0/len(a))

你做不必爲此使用numpy,但它傾向於在陣列fa上執行操作而不是Python(因爲在投射時沒有「開銷」)。

萬一溢出是高,則可以將數字用1/n域首先映射到一個日誌,計算這些日誌的總和,然後乘以最後計算出的指數,等的機會:

import numpy as np 

def geo_mean_overflow(iterable): 
    a = np.log(iterable) 
    return np.exp(a.sum()/len(a))
+2

爲此使用日誌很好。人們經常忘記溢出。 –

3

只是這樣做:

numbers = [1, 3, 5, 7, 10] 


print reduce(lambda x, y: x*y, numbers)**(1.0/len(numbers)) 
+0

這是**不**的幾何意思... –

+1

糾正它@WillemVanOnsem – Veltro

+0

現在它是正確的。但是請注意,通過使用'reduce(..)',你會引入一些計算開銷。 –

相關問題