简单的问题:如何获得矩阵的最常见值?

矩阵是一种特殊的二维数组,它通过运算保持其二维性质。

这是我整个实现的一个片段,所以我决定只向你展示与我的主要问题相关的重要部分:

import numpy as np
...
from src.labelHandler import LabelHandler
from collections import Counter

def viewData(filePathList, labelHandler=None):
...
    c = Counter(a)       #(1)
    print(c)             #(2)
    b = np.argmax(c)     #(3)
    print(b)             #(4)
...

输出将是:
{0.3: [(0, 0, 0), (0, 10, 0), (0, 11, 0), ...], 0.2: [(0, 18, 0), ...]}
Counter({0.3: 7435, 0.2: 6633, ...})
0

这也是我整个输出的一个片段。

重要的一行是带有 0 的最后一行。
问题似乎出在第 (3) 行。
b = np.argmax(c)

它只是打印出我在索引 0 中的最大值的位置。
但我想取回浮点值本身而不是索引。

我该如何解决这个问题?

提前致谢!

最佳答案

您可以将 scipy.statsnp.array.ravel() 一起使用来展平数组。这为您提供了模式和计数。

import numpy as np
from scipy import stats

A = np.random.randint(0, 9, (10, 10))

res = stats.mode(A.ravel())

# ModeResult(mode=array([4]), count=array([19]))

关于python - 返回矩阵/数组的最常见值(模式),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49558958/

10-11 22:14
查看更多