gpt4 book ai didi

python - 有效计算均值和中位数

转载 作者:太空狗 更新时间:2023-10-29 22:12:59 34 4
gpt4 key购买 nike

按顺序查找 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]

平均计算如下:

  • 1 = 均值(1)
  • 1.5 = mean(1,2)(即 input_list 中前 2 个值的平均值)
  • 2.3 = mean(1,2,4)(即 input_list 中前 3 个值的平均值)
  • 3.25 = mean(1,2,4,6)(即 input_list 中前 4 个值的平均值)等

中位数计算如下:

  • 1 = 中位数(1)
  • 1.5 = median(1,2)(即 input_list 中前 2 个值的中值)
  • 2.0 = median(1,2,4)(即 input_list 中前 3 个值的中位数)
  • 3.0 = median(1,2,4,6)(即 input_list 中前 4 个值的中值)等

我试过用下面的循环来实现它,但是看起来效率很低。

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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com