Jak obliczyć średnią geometryczną w pythonie (z przykładami)


Istnieją dwa sposoby obliczania średniej geometrycznej w Pythonie:

Metoda 1: Oblicz średnią geometryczną za pomocą SciPy

 from scipy. stats import gmean

#calculate geometric mean
gmean([value1, value2, value3, ...])

Metoda 2: Oblicz średnią geometryczną za pomocą NumPy

 import numpy as np

#define custom function
def g_mean(x):
    a = np. log (x)
    return np. exp ( a.mean ())

#calculate geometric mean
g_mean([value1, value2, value3, ...])

Obie metody zwrócą dokładnie takie same wyniki.

Poniższe przykłady pokazują, jak zastosować każdą z tych metod w praktyce.

Przykład 1: Oblicz średnią geometryczną za pomocą SciPy

Poniższy kod pokazuje, jak używać funkcji gmean() biblioteki SciPy do obliczania średniej geometrycznej tablicy wartości:

 from scipy. stats import gmean

#calculate geometric mean
gmean([1, 4, 7, 6, 6, 4, 8, 9])

4.81788719702029

Średnia geometryczna wynosi 4,8179 .

Przykład 2: Oblicz średnią geometryczną za pomocą NumPy

Poniższy kod demonstruje, jak napisać niestandardową funkcję obliczającą średnią geometryczną przy użyciu wbudowanych funkcji biblioteki NumPy :

 import numpy as np

#define custom function
def g_mean(x):
    a = np. log (x)
return np. exp ( a.mean ())

#calculate geometric mean
g_mean([1, 4, 7, 6, 6, 4, 8, 9])

4.81788719702029

Okazuje się, że średnia geometryczna wynosi 4,8179 , co odpowiada wynikowi z poprzedniego przykładu.

Jak postępować z zerami

Pamiętaj, że obie metody zwrócą zero, jeśli w tablicy, z którą pracujesz, znajdują się zera.

Możesz więc użyć poniższego fragmentu kodu, aby usunąć zera z tablicy przed obliczeniem średniej geometrycznej:

 #create array with some zeros
x = [1, 0, 0, 6, 6, 0, 8, 9]

#remove zeros from array 
x_new = [i for i in x if i != 0]

#view updated array
print (x_new)

[1, 6, 6, 8, 9]

Dodatkowe zasoby

Jak obliczyć średni błąd kwadratowy (MSE) w Pythonie
Jak obliczyć średni błąd bezwzględny w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *