Усеченное среднее в Python - PullRequest
       25

Усеченное среднее в Python

3 голосов
/ 20 февраля 2020

Я пытаюсь вычислить усеченное среднее списка с ручной функцией в python, но я не знаю, как мне настроить мою формулу.

Я хочу, чтобы вы могли задать для функции альфа-параметр , например, 0,1 (чтобы сократить выбросы на 10%).

Мой код пока (0,1 в данном случае альфа-значение):

lst[5,30,29,15,25,5,13,28,24,29] #for alpha=0.1 the list need to be adjusted --> lst[5,13,15,24,25,28,29,29]

def tmean(lst):
  s= sorted(lst)
  k= 0.1*len(lst)
  trimmed_mean= (1/(len(lst)-(2*k)))*sum(len(lst)-k)
  print(trimmed_mean)

Значение trimmed_mean с альфа = 0,1 должно равняться 21, но я не знаю, как мне нужно изменить свой код.

Спасибо.

1 Ответ

2 голосов
/ 20 февраля 2020
lst = [5,30,29,15,25,5,13,28,24,29]

def tmean(lst, alpha):
    s = sorted(lst)
    # Caclculate number of elements to trim from the beginning and end
    a = round(alpha * len(lst)
    # Check if alpha can actually remove any elements and if not return straight mean
    if a == 0:
        return sum(lst) / len(lst)
    # Remove trimmed elements from the list
    trimmed_list = s[a:-a]
    # Check if there is a list left after trimming
    if len(trimmed_list) == 0:
        return
    # Calculate average on the new list
    trimmed_ave = sum(trimmed_list)/len(trimmed_list)
    print(trimmed_ave)
    return trimmed_ave

tmean(lst, 0.1)

Очевидно, что некоторые из вышеперечисленных этапов могли бы быть объединены для более краткого кода, но для простоты объяснения были разбиты на отдельные строки

...