假设我有
data =
[[a, a, c],
[b, c, c],
[c, b, b],
[b, a, c]]
我想得到一个包含每列中出现次数最多的元素的列表:result = [b, a, c],最简单的方法是什么?
我使用 Python 2.6.6
请您参考如下方法:
在统计学中,您想要的是模式。 scipy 库 ( http://www.scipy.org/ ) 在 scipy.stats 中有一个 mode 函数。
In [32]: import numpy as np
In [33]: from scipy.stats import mode
In [34]: data = np.random.randint(1,6, size=(6,8))
In [35]: data
Out[35]:
array([[2, 1, 5, 5, 3, 3, 1, 4],
[5, 3, 2, 2, 5, 2, 5, 3],
[2, 2, 5, 3, 3, 2, 1, 1],
[2, 4, 1, 5, 4, 4, 4, 5],
[4, 4, 5, 5, 2, 4, 4, 4],
[2, 4, 1, 1, 3, 3, 1, 3]])
In [36]: val, count = mode(data, axis=0)
In [37]: val
Out[37]: array([[ 2., 4., 5., 5., 3., 2., 1., 3.]])
In [38]: count
Out[38]: array([[ 4., 3., 3., 3., 3., 2., 3., 2.]])
