一种选择是使用scipy.stats.mode http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mode.html:
In [36]: from scipy.stats import mode
In [37]: a
Out[37]:
array([[8, 8, 8, 5, 8],
[8, 2, 0, 8, 8],
[4, 5, 4, 2, 4],
[4, 6, 5, 2, 6]])
In [38]: vals, counts = mode(a, axis=1)
In [39]: vals
Out[39]:
array([[8],
[8],
[4],
[6]])
In [40]: counts
Out[40]:
array([[4],
[3],
[3],
[2]])
但是,它是使用 numpy 用 Python 编写的,并且根据输入中值的分布,它可能不会比您的解决方案更快。您可以在中找到实现https://github.com/scipy/scipy/blob/master/scipy/stats/stats.py https://github.com/scipy/scipy/blob/master/scipy/stats/stats.py(当我写这篇文章时,它就在这里:https://github.com/scipy/scipy/blob/master/scipy/stats/stats.py#L372 https://github.com/scipy/scipy/blob/master/scipy/stats/stats.py#L372).
该函数的基本部分仅依赖于 numpy,因此,如果它对您来说足够好,但您不希望依赖于 scipy,您可以将该函数复制到您自己的项目中 - 只要确保遵循scipy 使用的 BSD 许可证。