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来做到这一点,但这对于大型矩阵来说非常慢,所以我想找到一种矢量化的方法来做到这一点。
你可以使用Scipy 的模式-
from scipy.stats import mode
mode(X, axis=-1)[0]
Run Code Online (Sandbox Code Playgroud)