В 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