将列表中选定的向量部分相加,并输出总权重向量(使用python)

将列表中选定的向量部分相加,并输出总权重向量(使用python),python,vector,Python,Vector,我在列表中有以下向量: Q= [(0, 0.2815994630432826), (2, 0.678491614691639), (3, 0.678491614691639)] 我试着只总结浮动部分 ie Q=0.2815994630432826+0.678491614691639+0.678491614691639,因为第一部分是我不想要的索引。见下面的代码: aba=[] for doc in corpus_tfidf: con = round(np.sum(doc),

我在列表中有以下向量:

Q= [(0, 0.2815994630432826), (2, 0.678491614691639), (3, 0.678491614691639)]
我试着只总结浮动部分

ie Q=0.2815994630432826+0.678491614691639+0.678491614691639,因为第一部分是我不想要的索引。见下面的代码:

  aba=[]
  for doc in corpus_tfidf:
      con = round(np.sum(doc),2)
      aba.append(con)
  print aba
这是我得到的结果:6.64 我的代码将索引和浮动相加。我的意图是只把浮点数加起来,把总数加起来。有什么想法吗?谢谢你


注意:for循环是因为Q只是数百个具有此类向量的文档中的一个?这要求要求和的元素位于元组的第二个位置

>>> Q= [(0, 0.2815994630432826), (2, 0.678491614691639), (3, 0.678491614691639)]
>>> from operator import itemgetter
>>> sum(map(itemgetter(1), Q))
1.6385826924265605
否则,您可以建立一个列表并对其进行汇总

你可以用

    reduce(lambda x, y: x + y, map(lambda x : x[1], Q))
用于获取Q中的浮点和

Map在一个单独的列表中单独获取元组的第二部分,reduce计算这个新列表的元素之和

或者简单地说,你也可以这样做

    sum([x[1] for x in Q])
或者这个,

    reduce(lambda x, y : (0, x[1] + y[1]), Q)[1]

我认为最快、最简单的方法是使用求和函数和列表理解

>>> Q
[(0, 0.2815994630432826), (2, 0.678491614691639), (3, 0.678491614691639)]
>>> sum([i[1] for i in Q])
1.6385826924265605
>>> 

@老虎1:不客气。请随意。:@波厄姆,很好的解决方案。谢谢
>>> Q
[(0, 0.2815994630432826), (2, 0.678491614691639), (3, 0.678491614691639)]
>>> sum([i[1] for i in Q])
1.6385826924265605
>>>