在numpy矩阵中获取每行的多数元素

时间:2017-03-16 18:19:52

标签: python arrays numpy matrix

是否有一种快速方法(因此没有循环)在numpy数组中找到每行的多数元素并从中创建一个新数组?

例如,如果你有以下numpy数组:

X = 
[[ 1.  1.  1.]
 [ 1.  0.  1.]
 [ 1.  0.  1.]
 [ 1.  1.  1.]
 [ 1.  0.  1.]
 [ 1.  0.  1.]
 [ 0.  0.  0.]
 [ 1.  1.  1.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]

你可以做get_majority(X),输出

[ 1.  1.  1.  1.  1.  1.  0.  1.  0.  0.  0.]

我尝试通过循环遍历矩阵并使用Counter中的collections来做到这一点,但对于大型矩阵来说这是非常慢的,所以我想找到一种矢量化的方法来实现它。 / p>

1 个答案:

答案 0 :(得分:4)

您可以使用Scipy's mode -

from scipy.stats import mode

mode(X, axis=-1)[0]