python - 如何在python中计算字典数据的均值和中位数
问题描述
我正在应用字典值,但如何计算这些数据的中位数?我有另一种计算均值的方法,但中值出现错误...
arr = []
for i in range(n):
data = getValues() #[{450: 37, 451: 59, 452: 18, 453: 88, 454: 52},{450: 40, 451: 27, 452: 26, 453: 15, 454: 20},{450: 16, 451: 12, 452: 12, 453: 13, 454: 13},{450: 7, 451: 5, 452: 6, 453: 5, 454: 5}]
od = collections.OrderedDict(sorted(data.items()))
arr.append(od )
medianArr = np.median(arr, axis=0)
meanArr = np.mean(arr)
np.savetxt("dataMedian.txt", medianArr , fmt="%s", delimiter=",") #only values, without keys
np.savetxt("dataMean.txt", meanArr , fmt="%s", delimiter=",") #only values, without keys
我的平均工作方法:
arr2d = []
for i in range(n):
count += 1
data = getValues() #[{450: 37, 451: 59, 452: 18, 453: 88, 454: 52},{450: 40, 451: 27, 452: 26, 453: 15, 454: 20},{450: 16, 451: 12, 4652: 12, 453: 13, 454: 13},{450: 7, 451: 5, 452: 6, 453: 5, 454: 5}]
od = collections.OrderedDict(sorted(data.items()))
arr = []
for k, v in od.items():
arr.append(v/count)
arr2d.append(arr)
np.savetxt("dataMean.txt", arr2d, fmt="%s", delimiter=",") #ok
解决方案
为了使用 NumPy 实用程序,您可以将字典的值堆叠在一个数组中:
>>> arr = np.stack([list(d.values()) for d in data])
array([[37, 59, 18, 88, 52],
[40, 27, 26, 15, 20],
[16, 12, 12, 13, 13],
[ 7, 5, 6, 5, 5]])
然后,假设您要计算每个字典的数据统计信息,您可以执行以下操作:
>>> np.mean(arr, 1), np.median(arr, 1)
(array([50.8, 25.6, 13.2, 5.6]), array([52., 26., 13., 5.]))
您当然可以通过删除两个调用中的轴选项来计算全局平均值和中位数。
推荐阅读
- php - 如何限制 MediaWiki ContactPage 扩展的主题纯文本字段的字符?
- wordpress - 提供密码时,受密码保护的页面无法正确重定向
- rust - 为什么递归异步函数在 Rust 中需要“静态参数”?
- python-3.x - 如何在python中打印测试和变量之间没有空格
- python - 如何为 python pandas 数据框创建索引?
- c++ - 在 C++ 中初始化具有未知第一维大小的二维数组
- mysql - 带有 LIKE 条件的 MYSQL 查询没有给出正确的结果
- tensorflow - 保存编码器解码器的模型
- python - Python,FFMPEG:将FFMPEG子进程调用的输出重定向到字符串
- spring-boot - 使用 Kotlin 和 Gradle 时如何将 additional-spring-configuration-metadata.json 与 kapt 合并?