Как вычислить среднее геометрическое в 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