我有一个输入列表,比如x = [1,1,2,1,4,3,5,3,3]
,我想找到使用Python 2.6的模式。
Counter
,statistics
和mode()
等答案,这些答案都适用于Python 2.7及更高版本,但不适用于2.6。
我现在的问题是:如果没有对整个功能本身进行编程,有人会知道如何轻松计算这样一个列表的模式吗?
答案 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是否有可能的模块。这个似乎是一个可能的候选人,但可能还有其他人:
答案 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}