python - 给定一个数字计数器,如何有效地计算方差或标准差?
问题描述
例如,给定下一个直方图和箱:
import numpy as np
hist = np.array([1,1,2,1,2])
bins = np.array([0,1,2,3,4 ])
¿ 计算方差的最有效方法是什么?一种方法是重新创建数组并将其传递给np.var
函数:
import numpy as np
np.var(np.array([0, 1, 2, 2, 3, 4, 4]))
但是,我认为这不是很有效。
解决方案
所以你可以重写公式:
counts = hist.sum()
mean = (hist*bins).sum() / counts
sum_squares = (bins**2 * hist).sum()
var = sum_squares/counts - mean ** 2
# test
np.isclose(var, np.var(np.repeat(bins, hist)))
输出True
。
推荐阅读
- java - 与 Spring Boot 捆绑时,PROD 中 localhost API 的 ReactJS 代理 URL
- python - 如何转换所有元组的第一个元素,然后在 Python 中移动一个位置?
- html - 单击按钮时,如何将输入值放在第一行的表格单元格中?
- java - 有没有办法从 okhttp3 的失败中获取原始的 http post 消息?
- reactjs - 如何解决 @typescript-eslint/no-var-requires 错误。添加@axe-core/react 时出错
- javascript - 用字符串中的名字定义一个函数
- wordpress - Wordpress - 无法在 docker-compose 中更改用户名或密码
- javascript - Vue 3 post request is working but not showing anything until page is reloaded
- c - In C, how to receive the argument "q w; e r' (quotes included) from the command line?
- python - How to read the Excel file using pyspark?