假设我有
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.]])
关于python - 查找每列中出现次数最多的元素的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15554691/