【问题标题】:Calculate cumulative distribution function from a lis of values in Python从 Python 中的值列表计算累积分布函数
【发布时间】:2020-10-20 22:08:44
【问题描述】:

我想在 Python 中为这个列表中的每个值计算累积分布函数;

y = 1000, 1012, 1014, 1015, 1016, 1017, 1018, 1019...

以下函数;

F = (yi + 前 y 值) / y 值之和

示例:F 代表 1014

 F = (1014 + 1012 + 1000) / 8111 = 0.3730736

我想知道如何在 Python 中将此函数应用于大量 y 值。

谢谢!

【问题讨论】:

    标签: python cumulative-sum


    【解决方案1】:

    你可以这样定义一个函数:

    y =  [1000, 1012, 1014, 1015, 1016, 1017, 1018, 1019]
    
    def cumululative(list_of_values):
        sum_values = sum(list_of_values)
        F = []  
        temp = 0
        for i in list_of_values:
            temp += i
            F.append(temp/sum_values)
        return F
    
    print(cumululative(y))
    

    输出:

    [0.12328936012822093, 0.2480581925779805, 0.37307360374799653, 0.4982123042781408, 0.6234742941684133, 0.7488595734188139, 0.8743681420293429, 1.0]
    

    【讨论】:

      【解决方案2】:

      试试这个:

      import numpy as np
      
      y =  [1000, 1012, 1014, 1015, 1016, 1017, 1018, 1019]
      
      np.cumsum(y)/np.sum(y)
      
      

      结果是:

      array([0.12328936, 0.24805819, 0.3730736 , 0.4982123 , 0.62347429,
             0.74885957, 0.87436814, 1.        ])
      

      或者:

      import pandas as pd
      
      y =  pd.Series([1000, 1012, 1014, 1015, 1016, 1017, 1018, 1019])
      
      y.cumsum()/y.sum()
      

      结果现在是pd.Series 类型:

      0    0.123289
      1    0.248058
      2    0.373074
      3    0.498212
      4    0.623474
      5    0.748860
      6    0.874368
      7    1.000000
      dtype: float64
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-07
        • 2020-07-18
        • 2014-01-04
        • 1970-01-01
        • 2020-03-19
        • 1970-01-01
        • 2012-08-15
        相关资源
        最近更新 更多