Як обчислити середнє геометричне в python (з прикладами)


Існує два способи обчислення середнього геометричного в Python:

Спосіб 1: обчисліть середнє геометричне за допомогою SciPy

 from scipy. stats import gmean

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

Спосіб 2: обчисліть середнє геометричне за допомогою 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, ...])

Обидва методи дадуть абсолютно однакові результати.

Наступні приклади показують, як використовувати кожен із цих методів на практиці.

Приклад 1: обчислення середнього геометричного за допомогою SciPy

У наступному коді показано, як використовувати функцію gmean() бібліотеки SciPy для обчислення середнього геометричного масиву значень:

 from scipy. stats import gmean

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

4.81788719702029

Середнє геометричне виявляється 4,8179 .

Приклад 2: обчислення середнього геометричного за допомогою NumPy

У наступному коді показано, як написати спеціальну функцію для обчислення середнього геометричного за допомогою вбудованих функцій бібліотеки 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

Середнє геометричне виявляється рівним 4,8179 , що відповідає результату з попереднього прикладу.

Як поводитися з нулями

Зауважте, що обидва методи повертатимуть нуль, якщо в масиві, з яким ви працюєте, є нулі.

Отже, ви можете використати такий фрагмент коду, щоб видалити нулі з масиву перед обчисленням середнього геометричного:

 #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]

Додаткові ресурси

Як обчислити середню квадратичну помилку (MSE) у Python
Як обчислити середню абсолютну похибку в Python

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *