python - 如何从字典中获取时间范围和不同名称的总和

标签 python numpy math

假设我有几个字典(每小时一本),它们都有相同的键:

h1={'a':1, 'b':3, 'c':10}
h2={'a':7, 'b':15, 'c':2}
h3={'a':9, 'b':15, 'c':35}

如何获得所有时间和键的接下来几个小时之间的绝对值总和,即以下形式的总和:

|1-7|+|7-9|+|3-15|+|15-15|+|10-2|+|2-35|

更一般地说,它的形式如下:

enter image description here

其中 beta 为 1,pst 是我们字典的键,我们也会按小时求和。

最佳答案

使用 numpy,您可以构造一个数组,计算绝对差 ( numpy.diff +abs) 和 sum:

h1={'a':1, 'b':3, 'c':10}
h2={'a':7, 'b':15, 'c':2}
h3={'a':9, 'b':15, 'c':35}

import numpy as np
dicts = [h1, h2, h3]

a = np.array([list(d.values()) for d in dicts])
abs(np.diff(a, axis=0)).sum()

输出:61

测试版:

beta = 1
abs(np.diff(a, axis=0)*beta).sum()

关于python - 如何从字典中获取时间范围和不同名称的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70694243/

相关文章:

math - 围绕一个点旋转 Vector2

python - 在pygame中用轮廓填充表面

python - 我想用 z 矩阵所有值的平均值填充 z 矩阵中的缺失值

python - 检查 python 列表/numpy ndarray 中是否存在重复项的最快方法

pandas - 当值取决于先前值时如何在 Pandas 中进行矢量化

math - Monad 有什么特别之处?

design-patterns - 以算法方式初始化拼字游戏板的特殊图 block ?

python - 如何使用 gstreamer 查找媒体的长度?

python - Pyramid :为什么我不能在没有授权策略的情况下使用身份验证策略?

python - 如何从字典和 Pandas 列表中创建新的数据框