获取数组中最不常见的元素

时间:2011-01-20 02:58:06

标签: python python-3.x

为了找到最常见的,我知道我可以使用这样的东西:

most_common = collections.Counter(array).most_common(to_find)

然而,我找不到任何可比较的东西,因为找到最不常见的元素。

我可以获得有关如何做的建议。

11 个答案:

答案 0 :(得分:27)

没有任何参数的

most_common会返回所有条目,从最常见到最少排序。

因此,要找到最不常见的,只需从另一端开始查看它。

答案 1 :(得分:20)

借用collections.Counter.most_common的来源并酌情反转:

from operator import itemgetter
import heapq
import collections
def least_common_values(array, to_find=None):
    counter = collections.Counter(array)
    if to_find is None:
        return sorted(counter.items(), key=itemgetter(1), reverse=False)
    return heapq.nsmallest(to_find, counter.items(), key=itemgetter(1))

>>> data = [1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4]
>>> least_common_values(data, 2)
[(1, 2), (2, 4)]
>>> least_common_values([1,1,2,3,3])
[(2, 1), (1, 2), (3, 2)]
>>>

答案 2 :(得分:12)

怎么样?
least_common = collections.Counter(array).most_common()[-1]

答案 3 :(得分:4)

def least_common_values(array, to_find):
    """
    >>> least_common_values([1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4], 2)
    [(1, 2), (2, 4)]
    """
    counts = collections.Counter(array)
    return list(reversed(counts.most_common()[-to_find:]))

答案 4 :(得分:3)

我想你需要这个:

least_common = collections.Counter(array).most_common()[:-to_find-1:-1]

答案 5 :(得分:3)

Iterable中实现最小值搜索的最简单方法如下:

Counter(your_iterable).most_common()[-1]

这将返回一个二维元组,其中包含第一个位置的元素和第二个位置的出现次数。

答案 6 :(得分:1)

我建议如下,

least_common = collections.Counter(array).most_common()[len(to_find)-10:len(to_find)]

答案 7 :(得分:1)

仅获取最不常见的元素而已:

>>> from collections import Counter
>>> ls = [1, 2, 3, 3, 2, 5, 1, 6, 6]
>>> Counter(ls).most_common()[-1][0]
5

答案 8 :(得分:0)

您可以使用按键功能:

>>> data=[1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4]
>>> min(data,key=lambda x: data.count(x))
1
>>> max(data,key=lambda x: data.count(x))
4

答案 9 :(得分:0)

根据大多数常见元素的答案:https://stackoverflow.com/a/1518632

以下是一个用于获取列表中最不常见元素的内容:

def least_common(lst):
    return min(set(lst), key=lst.count)

答案 10 :(得分:0)

对不起,对这个话题来说太晚了。发现文档很有帮助: https://docs.python.org/3.7/library/collections.html

搜索“最小”,您会遇到此表,这将有助于获得比列表中最后(-1)个元素更多的信息:

c.most_common()[:-n-1:-1]       # n least common elements

这是一个例子:

n = 50

word_freq = Count(words)
least_common = word_freq.most_common()[:-n-1:-1]