没有独特的模式;找到 2 个同样常见的值

新手上路,请多包涵

我正在使用 statistics.mode([1, 1, 2, 2, 3]) 来查找模式,但我得到:

没有独特的模式;找到 2 个同样常见的值

当找到多个模式时,如何输出 12

原文由 mgcy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 475
2 个回答

例如:

 lst = [1, 1, 2, 2, 3]

# test for count lst elements
lst_count = [[x, lst.count(x)] for x in set(lst)]
print lst_count
# [[1, 2], [2, 2], [3, 1]]

# remove count <= 1
lst_count = [x for x in set(lst) if lst.count(x) > 1]
print lst_count
# [1, 2]

# get 1 or 2 by index
print lst_count[0], lst_count[1]
# 1 2

另一种方式:

 from collections import Counter

# change lst elements to str, for more readable
lst = ['a', 'a', 'b', 'b', 'c']

# get a dict, key is the elements in lst, value is count of the element
d_mem_count = Counter(lst)
print d_mem_count
# Counter({'a': 2, 'b': 2, 'c': 1})

for k in d_mem_count.keys():
    if d_mem_count[k] > 1:
        print k

# output as below
# a
# b

原文由 Jayhello 发布,翻译遵循 CC BY-SA 4.0 许可协议

请注意,在 --- 中 statistics.mode Python 3.8 的行为已更改:

在 3.8 版更改:现在通过返回遇到的第一个模式来处理多模式数据集。以前,它会在找到多个模式时引发 StatisticsError。

在你的例子中:

 from statistics import mode

mode([1, 1, 2, 2, 3])
# 1


同样从 Python 3.8 开始,您也可以使用 statistics.multimode 以首次遇到的顺序返回最常出现的值的列表:

 from statistics import multimode

multimode([1, 1, 2, 2, 3])
# [1, 2]

原文由 Xavier Guihot 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题