在Python列表中顺序查找行的均值和中位数的最有效方法是什么?
例如,我的列表:
input_list = [1,2,4,6,7,8]
我想产生一个包含以下内容的输出列表:
output_list_mean = [1,1.5,2.3,3.25,4,4.7]
output_list_median = [1,1.5,2.0,3.0,4.0,5.0]
平均值计算如下:
等
并且中位数计算如下:
等
我尝试使用以下循环来实现它,但是效率似乎很低。
import numpy
input_list = [1,2,4,6,7,8]
for item in range(1,len(input_list)+1):
print(numpy.mean(input_list[:item]))
print(numpy.median(input_list[:item]))
最佳答案
您自己做的任何事情,尤其是使用中位数,都将需要很多工作,或者效率很低,但是Pandas内置了您要执行的函数的高效实现,扩展的平均值为O(n),使用跳过列表,扩展中位数为O(n * log(n)):
import pandas as pd
import numpy as np
input_list = [1, 2, 4, 6, 7, 8]
>>> pd.expanding_mean(np.array(input_list))
array([ 1. , 1.5 , 2.33333, 3.25 , 4. , 4.66667])
>>> pd.expanding_median(np.array(input_list))
array([ 1. , 1.5, 2. , 3. , 4. , 5. ])
关于python - 有效计算平均值和中位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31370214/