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

use*_*737 3 python arrays numpy matrix

有没有一种快速的方法(所以没有 for 循环)来查找 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.]]
Run Code Online (Sandbox Code Playgroud)

你可以这样做get_majority(X),这将输出

[ 1.  1.  1.  1.  1.  1.  0.  1.  0.  0.  0.]
Run Code Online (Sandbox Code Playgroud)

我已经尝试通过循环矩阵并使用Counterfromcollections来做到这一点,但这对于大型矩阵来说非常慢,所以我想找到一种矢量化的方法来做到这一点。

Div*_*kar 7

你可以使用Scipy 的模式-

from scipy.stats import mode

mode(X, axis=-1)[0]
Run Code Online (Sandbox Code Playgroud)