Python: простой способ сделать геометрическое среднее в python?
интересно, есть ли простой способ сделать геометрическое среднее с помощью python, но без использования пакета python. Если нет, есть ли простой пакет для выполнения геометрического среднего?
2 ответов
формула означает gemetric это:
Так что вы можете легко написать алгоритм как:
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))