【问题标题】:Finding multiple modes in a tuple list - python在元组列表中查找多种模式 - python
【发布时间】:2014-01-28 21:39:53
【问题描述】:

我是 python 新手,需要一些帮助来找出元组的模式。但是,我现在的代码只显示一种模式,我需要更改什么来显示多种模式(如果数字列表超过 1)

    import itertools
    import operator

    def mode_function2(lst):
       return max(set(lst), key=lst.count)

【问题讨论】:

  • 您希望lst = [1,1,2,2] 返回什么? [1,2] 还是 [1,1,2,2]? (我假设第一个。) IOW,你是对模式的身份更感兴趣还是你也需要它们的多样性?
  • 抱歉,“1st”不是一个好用的变量名。我实际上有一个不同的元组,它有很多数字,我只想知道哪个数字在元组中出现最多,所以我猜身份。现在它只给我带来了一个可能更多的数字。

标签: python tuples mode median


【解决方案1】:

这行得通:

from collections import Counter
def mode_function2(lst):
    counter = Counter(lst)
    _,val = counter.most_common(1)[0]
    return [x for x,y in counter.items() if y == val]

下面是一个演示:

>>> mode_function2([1, 2, 2])
[2]
>>> mode_function2([1, 2, 2, 1])
[1, 2]
>>> mode_function2([1, 2, 3])
[1, 2, 3]
>>>

这里的重要概念是:

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    def mode_function2(lst, multiplicity = False):
        maxFreq =  max(map(lst.count, lst))
        modes = [i for i in lst if lst.count(i) == maxFreq]
        return modes if multiplicity else set(modes)
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      相关资源
      最近更新 更多