是否有任何函数可以在Python 2.6中找到一个列表的模式(如果多出一个值,则多个)?

时间:2015-12-23 14:30:04

标签: python list statistics python-2.6

我有一个输入列表,比如x = [1,1,2,1,4,3,5,3,3],我想找到使用Python 2.6的模式。

到目前为止,谷歌只向我提供了Counterstatisticsmode()等答案,这些答案都适用于Python 2.7及更高版本,但不适用于2.6。

我现在的问题是:如果没有对整个功能本身进行编程,有人会知道如何轻松计算这样一个列表的模式吗?

4 个答案:

答案 0 :(得分:2)

如果您正在进行统计工作,那么可能已经安装了scipy。如果是这种情况,您可以使用scipy.stats.mode

如果没有,你需要编写自己的函数或从其他第三方库中获取一个函数,因为python2.6中的标准库中没有一个。

另外,scipy.stats.mode显然只取决于numpy,因此,如果您有numpy但不想下载scipy,那么您可以copy the source }。 。

答案 1 :(得分:1)

x = [1,1,2,1,4,3,5,3,3]
print [i for i in set(x) if x.count(i) == max(map(x.count, x))]

结果:

[1, 3]

如果你需要重用,可能是一个lambda函数:

mode = lambda x: [i for i in set(x) if x.count(i) == max(map(x.count, x))]
x = [1,1,2,1,4,3,5,3,3]
print mode(x)

答案 2 :(得分:0)

如果您不想编写自己的函数,请检查PyPI是否有可能的模块。这个似乎是一个可能的候选人,但可能还有其他人:

https://pypi.python.org/pypi/Counter/1.0.0

答案 3 :(得分:0)

x= [1,2,3,1,2,4,5]
y = set(x)
countDict = {}
for item in y:
    countDict[item] = x.count(item)

结果:

{1: 2, 2: 2, 3: 1, 4: 1, 5: 1}