【问题标题】:Python: How to multiply values of a Counter object?Python:如何将 Counter 对象的值相乘?
【发布时间】:2014-05-15 12:17:21
【问题描述】:

我正在寻找一种将 Counter 对象的值相乘的方法,即

a =  collections.Counter(one=1, two=2, three=3)
>>> Counter({'three': 3, 'two': 2, 'one': 1})

b = a*2
>>> Counter({'three': 6, 'two': 4, 'one': 2})

在 python 中执行此操作的标准方法是什么?

我为什么要这样做: 我有一个稀疏特征向量(由 Counter 对象表示的词袋),我想对其进行规范化。

【问题讨论】:

  • 只乘以2?
  • 不,有一些真实的因素。我想你会建议使用 +,这将是我的具体情况的解决方案。但是,这对我标准化向量(可能有任何实际长度)的目标没有帮助。

标签: python counter multiplication


【解决方案1】:

你可以这样做:

for k in a.keys():
     a[k] = a[k] * 2

【讨论】:

  • 谢谢!我不知道这种操作在 python 中是可能的。实际上,我一直在想为什么文档没有提到任何 getter/setter 函数。现在我知道为什么了。
  • 不客气。你可以用 dict 做同样的事情。
  • keys() 不是必需的
【解决方案2】:

您可以添加Counter:

b = a+a
>>> print b
Counter({'three': 6, 'two': 4, 'one': 2})

【讨论】:

  • 这是我遇到的第一个解决方案,但有两个问题:1)它不适用于大因素。 2) 它只允许与整数相乘。
  • @JohnSmith,真的。你是对的。 DavidK 的方法要灵活得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 2021-05-31
  • 2021-02-24
  • 1970-01-01
相关资源
最近更新 更多