Python 中的截尾平均值
Trimmed mean in Python
我正在尝试计算 python 中具有 手动函数的列表的 修剪平均值 但我不知道'知道我必须如何调整我的公式。
我希望您可以为函数提供一个 alpha 参数,例如0.1(减少 10% 异常值)。
到目前为止我的代码(0.1 在这种情况下是 alpha 值):
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)
alpha=0.1 的 trimmed_mean 应该是 21,但我不知道如何调整我的代码。
谢谢。
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)
显然,上面的一些阶段可以组合起来以获得更简洁的代码,但为了便于解释,已拆分为单独的行
我正在尝试计算 python 中具有 手动函数的列表的 修剪平均值 但我不知道'知道我必须如何调整我的公式。
我希望您可以为函数提供一个 alpha 参数,例如0.1(减少 10% 异常值)。
到目前为止我的代码(0.1 在这种情况下是 alpha 值):
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)
alpha=0.1 的 trimmed_mean 应该是 21,但我不知道如何调整我的代码。
谢谢。
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)
显然,上面的一些阶段可以组合起来以获得更简洁的代码,但为了便于解释,已拆分为单独的行