我有一个数据集,它是一个由列表组成的字典(每个列表中的元素数量是固定的,但是字典本身有大量的条目)
E.g:
curl
现在我需要创建一个dict:
d1 = {0: [1,2,3],
1: [2,3,4],
2: [3,4,5],
3: [4,5,6],
4: [5,6,7] }
,平均窗口随着我向下移动而增加。 我无法解决这个问题并寻求任何形式的帮助。
这是我的尝试(似乎没有做正确的事情:()
d_required = { 0: [d1[0][0]/1, d1[0][1]/1, d1[0][2]/1],
1: [(d1[0][0] + d1[1][0])/2, (d1[0][1] + d1[1][1])/2, (d1[0][2] + d1[1][2])/2],
2: [(d1[0][0] + d1[1][0] + d1[2][0])/3, (d1[0][1] + d1[1][1] + d1[2][1])/3, (d1[0][2] + d1[1][2] + d[2][2])/3],
3: [(d1[0][0] + d1[1][0] + d1[2][0] +d1[3][0])/4, (d1[0][1] + d1[1][1] + d1[2][1] + d1[3][1])/4, (d1[0][2] + d1[1][2] + d[2][2] + d[3][2])/4],
4: [(d1[0][0] + d1[1][0] + d1[2][0] + d1[3][0] + d1[4][0])/5, (d1[0][1] + d1[1][1] + d1[2][1] + d1[3][1] + d1[4][1])/5, (d1[0][2] + d1[1][2] + d[2][2] + d[3][2] + d1[4][2])/5]}
答案 0 :(得分:3)
s = [0., 0., 0.]
resultDict = {}
for c, k in enumerate(sorted(d1)):
s = [sum((x,y)) for x,y in zip(s, d1[k])]
resultDict[k] = [x/(c+1) for x in s]
在上面:
s
是累计金额
resultDict
是新词典
对于d1
中的每个密钥,我们更新累计金额s
并向resultDict
添加新条目。
这会产生resultDict
:
{0: [1, 2, 3],
1: [1.5, 2.5, 3.5],
2: [2, 3, 4],
3: [2.5, 3.5, 4.5],
4: [3, 4, 5]}
上面的代码,以函数的形式,如下所示:
def cumave(d1):
s = [0., 0., 0.]
resultDict = {}
for c, k in enumerate(sorted(d1)):
s = [sum((x,y)) for x,y in zip(s, d1[k])]
resultDict[k] = [x/(c+1) for x in s]
return resultDict
答案 1 :(得分:1)
错误在一行。
for k in range(d):
range
不包括最后一个值。将其更改为range(d+1)
。