Python: простой способ сделать геометрическое среднее в python?

интересно, есть ли простой способ сделать геометрическое среднее с помощью python, но без использования пакета python. Если нет, есть ли простой пакет для выполнения геометрического среднего?

2 ответов


формула означает gemetric это:

geometrical mean

Так что вы можете легко написать алгоритм как:

import numpy as np

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

вам не нужно использовать numpy для этого, но он имеет тенденцию выполнять операции с массивами быстрее, чем Python (так как с литьем меньше "накладных расходов").

в случае, если шансы переполнения высоки, вы можете сопоставить числа с log домен сначала вычислите сумму этих журналов, затем умножьте на 1/n и, наконец, вычислить показатель, например:

import numpy as np

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

просто сделать это:

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


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