Вопрос по python, math, scipy – среднее гармоническое в питоне

12

Функция гармонического среднего в Python (scipy.stats.hmean) требует, чтобы на входе были положительные числа.

Например:

from scipy import stats
print stats.hmean([ -50.2 , 100.5 ])

результаты в:

ValueError: Harmonic mean only defined if all elements greater than zero

Я математически не понимаю, почему это так, за исключением редкого случая, когда вы в конечном итоге делитесь на ноль. Вместо проверки деления на ноль,hmean() затем выдает ошибку при вводе любого положительного числа, независимо от того, можно найти среднее гармоническое или нет.

Я что-то здесь упускаю в математике? Или это действительно ограничение вSciPy?

Как бы вы пошли, чтобы найти среднее гармоническое для набора чисел, которые могут быть положительными или отрицательными в питоне?

... и математический вопрос, на который четко дан ответ, поскольку среднее гармоническое имеет смысл только для положительных чисел. Costas Bouyioukos
"Я математически не понимаю, почему это так ..." таким образом, у вас есть математический вопрос, а не вопрос программирования. Karl Knechtel

Ваш Ответ

4   ответа
2

рименения к отрицательным числам (хотя вы, возможно, не захотите вычислять среднее гармоническое +1 и -1), однако оно предназначено для вычисления среднего для таких величин, как отношения, чтобы придать равный вес каждой точке данных, в то время как в арифметическом средстве или около того отношение крайних точек данных приобретет гораздо больший вес и, следовательно, нежелательно.

Таким образом, вы либо можете попытаться жестко закодировать определение самостоятельно, как предложено @HYRY, либо, возможно, применили среднее гармоническое значение в неправильном контексте.

23

йствительных чисел. Если вы попытаетесь вычислить его для наборов с отрицательными значениями, вы получите все виды странных и бесполезных результатов, даже если вы не нажмете div на 0. Например, применение формулы к набору (3, -3, 4) дает среднее значение из 12!

+1 Хороший ответ. Отрицательные числа уменьшают знаменатель, что раздувает результат.
факториал (12) ??? ;-)
Хорошее объяснение того, почему гармоническое среднее не имеет абсолютно никакого смысла для отрицательных чисел.
10

ского:

len(a) / np.sum(1.0/a) 

Но в Википедии сказано, что среднее гармоническое определяется для положительных действительных чисел:

http://en.wikipedia.org/wiki/Harmonic_mean

3

= 3.6:

https://docs.python.org/3/library/statistics.html

Вы можете использовать его средний метод, как это. Допустим, у вас есть список чисел, из которых вы хотите найти среднее значение:

list = [11, 13, 12, 15, 17]
import statistics as s
s.harmonic_mean(list)

У него есть и другие методы, такие как stdev, дисперсия, мода, среднее, медиана и т. Д., Которые слишком полезны.

Похожие вопросы