1

我在列表中有以下向量:

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它只是具有此类向量的数百个文档中的一个)。

4

3 回答 3

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]
于 2013-07-28T15:26:57.583 回答
0

我认为对你来说最快和更简单的方法是使用 sum 函数和列表理解

>>> Q
[(0, 0.2815994630432826), (2, 0.678491614691639), (3, 0.678491614691639)]
>>> sum([i[1] for i in Q])
1.6385826924265605
>>> 
于 2013-07-28T15:42:03.733 回答
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
于 2013-07-28T15:18:48.060 回答