python - 如何计算计数值对的标准差
问题描述
在 numpy 中,用于计算标准偏差的函数需要一个值列表,如 [1, 2, 1, 1] 并计算这些值的标准偏差。就我而言,我有一个嵌套的值和计数列表,例如 [[1, 2], [3, 1]],其中第一个列表包含值,第二个列表包含相应值出现频率的计数。
我正在寻找一种干净的方法来计算上面给定列表的标准偏差,干净的意思
- numpy、scipy、pandas 等中已经存在的函数。
- 一种更pythonic的方法来解决这个问题
- 更简洁易读的解决方案
我已经有了一个可行的解决方案,它将嵌套的计数值列表转换为一个扁平的值列表,并使用上面的函数计算标准偏差,但我发现它不是那么令人愉快,宁愿有另一个选择。
我的解决方法的一个最小工作示例是
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.4330127018922193
0.4330127018922193
感谢您的任何想法或建议:)
解决方案
您只是在寻找 numpy.repeat。
numpy.std(numpy.repeat(value_counts[0], value_counts[1]))
推荐阅读
- python - 我想在我的第一个 python 环境中调用第二个 python 环境中的函数。这可能吗?
- reactjs - 开玩笑的 Babel 7 无法运行 redux 组件测试
- circuit-breaker - 我的策略行为可以根据执行中的数据而改变吗?
- azure-devops - 在 Azure Pipeline 中使用 Console.write 查找测试输出的位置
- python - Python NLTK 意外的循环语料库数据丢失
- javascript - 如何使用带有文件类型输入的 Redux-Form 字段数组
- javascript - Node.js 中的 Jquery 错误“$ 不是函数”
- ajax - 在某些文档上出现 500 错误,但在其他文档上却没有。为什么?
- typescript - 如何使用嵌套路径在 node_module 中发布 Typescript 类型定义?
- javascript - 为什么在加载所有资源之前锚点击不起作用?