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

时间:2013-07-28 15:15:36

标签: 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),2)
      aba.append(con)
  print aba

以下是我得到的结果:(6.64) 我的代码添加了索引,然后是浮点数。我的意图是只加上浮点数并输出总数。任何想法?,提前谢谢。

注意:( for循环是因为Q只是具有此类向量的数百个文档中的一个。)

3 个答案:

答案 0 :(得分:0)

这样的东西? (这要求您要总结的元素位于元组中的第二个位置)

>>> Q= [(0, 0.2815994630432826), (2, 0.678491614691639), (3, 0.678491614691639)]
>>> from operator import itemgetter
>>> sum(map(itemgetter(1), Q))
1.6385826924265605

否则,你可以建立一个列表并sum向上。

>>> sum([val for _, val in Q])
1.6385826924265605

答案 1 :(得分:0)

你可以用,

    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]

答案 2 :(得分:0)

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

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