python - 寻找 numpy 模式向量

标签 python numpy scipy

我有一个 numpy 数组,其中包含 one-hot 向量。我想找到这些独热向量的众数。请注意,这并不等同于查找值的众数。

例如对于

x = [[0,0,0,1],
     [0,0,0,1],
     [0,0,1,0],
     [0,1,0,0],
     [1,0,0,0]]

assert vector_mode(x) == [0,0,0,1]
assert scipy.stats.mode(x) == [0,0,0,0]

使用 numpy/scipy 执行此操作最有效的方法是什么?

最佳答案

我们将one-hot向量作为2D输入数组的行进行处理。因此,每一行的 argmax 对于每个 one-hot 向量都是唯一的。得到那些。然后,统计他们的数量。具有最大 argmax 计数的任何行都将是所需的模式行输出。让我们选择第一个,再次使用 argmax,最后索引到 2D 输入。

因此,一个实现 -

idx = np.argmax(x,1)
count = np.bincount(idx)
out = x[(idx==count.argmax()).argmax()]

关于python - 寻找 numpy 模式向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46102752/

相关文章:

python - Pandas 数据框列的中位数

python - "RuntimeWarning: invalid value encountered in multiply"错误如何获取更详细的错误信息numpy

python - 使 raw_input() 包装在 .bat 文件中时同时使用管道和参数

python - 如何让用户在生成文件时下载文件

python - 创造众多独特的事件

python - 在纯 numpy 中矢量化康威的生命游戏?

python - 来自整数列表列表的 Scipy 稀疏矩阵

python - SciPy NumPy 和 SciKit-learn ,创建一个稀疏矩阵

python - 比较 scipy、torch 和 Fourier 周期卷积时的不一致

Python异常文件排序