在numpy中,用于计算standard deviaiton的函数期望像[1、2、1、1]这样的值列表,并从中计算标准差。就我而言,我有一个嵌套的值和数值列表,如[[1,2],[3,1]],其中第一个列表包含值,第二个列表包含相应值出现频率的计数。>
我正在寻找一种 clean 方法,用于为上述给定列表计算标准差,这很干净
我已经有了一个可行的解决方案,可以将嵌套的计数值列表转换为平坦的值列表,并使用上述函数来计算标准差,但是我发现它并不那么令人满意,而是有另一种选择。
我的解决方法的最小工作示例是
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)
感谢任何想法或建议:)
答案 0 :(得分:1)
您只是在寻找numpy.repeat。
numpy.std(numpy.repeat(value_counts[0], value_counts[1]))