首页 文章

如何在重复索引时创建一个显示各个值之和的向量?

提问于
浏览
-1

我有一个字典'd',它存储一个索引列表(d ['inds'])和一个值列表(d ['vals']) . 例如:d ['inds'] == [0,3,7,3,3,5,1] d ['vals'] == [1.0,2.0,3.0,4.0,5.0,6.0,7.0] In在上面的例子中,索引3出现了三次 . 如何在重复索引时创建一个显示各个值之和的向量?换句话说,对应于d的这个例子的向量将是:#ind:0 1 2 3 * 4 5 6 7 x == [1.0,7.0,0.0,11.0,0.0,6.0,0.0,3.0]

1 回答

  • 0

    您可以创建一个字典,其中键是索引,值是总和:

    d = {
        'inds': [0, 3, 7, 3, 3, 5, 1],
        'vals': [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
    }
    
    result = {}
    for i, v in zip(d['inds'], d['vals']):
        if i not in result:
            result[i] = 0
        result[i] += v
    
    print(result)
    

    Output

    {0: 1.0, 1: 7.0, 3: 11.0, 5: 6.0, 7: 3.0}
    

    如果列表(向量)是强制性的,可以通过以下方式完成:

    result = [0]*(max(d['inds']) + 1)
    for i, v in zip(d['inds'], d['vals']):
        result[i] += v
    
    print(result)
    

    Output

    [1.0, 7.0, 0, 11.0, 0, 6.0, 0, 3.0]
    

相关问题