我有一个元组[(val1, freq1), (val2, freq2) .... (valn, freqn)]
的列表。我需要得到上述数据的中心趋势(平均值,中位数)和偏差(方差,标准差)的度量。我还想为这些值绘制一个箱线图。
我看到numpy数组有直接的方法从值列表中获得平均值/中值和标准差(或方差)。
numpy(或其他任何著名的库)是否有直接的方法来操作这样一个频率分布表?
还有:将上述元组列表以编程方式扩展为一个列表的最佳方法是什么?(例如,如果freq dist是[(1,3) , (50,2)]
,则获取列表[1,1,1,50,50]
以使用np.mean([1,1,1,50,50])
的最佳方法是什么)?
我看到了一个自定义函数here,但如果可能的话,我希望使用标准实现。
3条答案
按热度按时间vltsax251#
首先,我会像@user8153那样将这个混乱的列表更改为两个
numpy
数组:然后你可以重建数组(使用
np.repeat
防止循环):并在
data
数组上使用numpy
statistical functions。如果这会导致内存错误(或者您只是想尽可能地提高性能),您还可以使用一些专门构建的函数:
6jjcrrmo2#
给予
np.average
(它采用weights
参数)来避免构建值列表:给出了20.6,正如你所期望的。我认为这对均值,方差,或标准差不起作用。
rdrgkggo3#
频率分布数据
为类创建中点列
因此
平均值
标准差