如何计算计数值对的标准差

时间:2019-05-04 10:07:27

标签: python numpy scipy statistics

在numpy中,用于计算standard deviaiton的函数期望像[1、2、1、1]这样的值列表,并从中计算标准差。就我而言,我有一个嵌套的值和数值列表,如[[1,2],[3,1]],其中第一个列表包含值,第二个列表包含相应值出现频率的计数。

我正在寻找一种 clean 方法,用于为上述给定列表计算标准差,这很干净

  • 在numpy,scipy,pandas等中已经存在的功能。
  • 更Python化的方法解决问题
  • 更简洁易读的解决方案

我已经有了一个可行的解决方案,可以将嵌套的计数值列表转换为平坦的值列表,并使用上述函数来计算标准差,但是我发现它并不那么令人满意,而是有另一种选择。

我的解决方法的最小工作示例是

Array
(
  [10100004] => Array
    (
        [0] => stdClass Object
            (
                [ID] => 1116
                [barcode] => 10100004
                [status] => 1
            )
     )
 )

输出为

import numpy as np

# The usual way
values = [1,2,1,1]
deviation = np.std(values)
print(deviation)

# My workaround for the problem
value_counts = [[1, 2], [3, 1]]
values, counts = value_counts
flattened = []
for value, count in zip(values, counts):
    # append the current value count times
    flattened = flattened + [value]*count
deviation = np.std(flattened)
print(deviation)

感谢任何想法或建议:)

1 个答案:

答案 0 :(得分:1)

您只是在寻找numpy.repeat。

numpy.std(numpy.repeat(value_counts[0], value_counts[1]))