Python - 从数组中获取最频繁的元素/将 numpy 数组转换为 std 数组

标签 python list max frequency python-2.6

我正在用 Python 实现 K 近邻算法(对于那些不了解学习的人,这是一种用于根据已经分类的数据使用欧氏距离对对象进行分类的算法).

我已经计算了我的距离,我可以采用 k 个最近的距离,并找到这些对象的类别。我的问题是,如果 K 大于 1,比如 3 或 5,我不确定如何获得列表中出现频率最高的元素。

比如我的输出是:

[10, 9, 7, 10]

10 出现次数最多,所以我想返回这个数字。如果出现平局(2 个或更多元素出现频率相同),它会返回一个错误(我可以自己处理)。我只是想就如何返回上面列表的最大值提出一些意见。 (使用 python 2.6.6 所以我不能使用集合导入)。

第二个问题:

我正在尝试将 numpy 数组转换为普通数组。我的代码如下所示:

def getClassesOfIndexes(l):
    tmp1 = []
    for i in l:
        tmp1.append(classes[i])
    return tmp1

print(getClassesOfIndexes([1024, 9128, 394, 39]))

打印如下:[array([10], dtype=uint8), array([7], dtype=uint8), array([10], dtype=uint8), array([9] , dtype=uint8)]

我可以做些什么让它简单地返回 [10, 7, 10, 9]

感谢您的帮助。

最佳答案

问题 2 更容易(尽管将来,请将不相关的问题作为两个单独的问题发布到 SO 上)。 tolist 函数自动将 numpy 数组转换为常规列表 http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tolist.html

问题 1 也非常简单。你说你想要“列表中最常见的元素”。这里有一个完整的讨论Python most common element in a list .一种解决方案是将每个元素映射到其频率的字典,然后获取与映射中最大值对应的键。这可能看起来像

...
freq_map = {my_list.count(val):val for val in set(my_list)}
return freq_map[max(freq_map.keys())]

关于Python - 从数组中获取最频繁的元素/将 numpy 数组转换为 std 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157310/

相关文章:

python - 如何将嵌套列表字符串转换为整数,然后在 python 3 中对它们进行排序?

python - 了解 scipy.optimize.basinhopping 的输出

http - 通过powershell在IIS上设置文件html响应头缓存控制

python - 返回字典中的最大值

python lxml 3.3.5 - 加载代码时出错 - "ValueError: lxml.etree._Element has the wrong size, try recompiling"

python - 如何显示直接从Figure类创建的matplotlib图形?

list - XSLT 条件与外部文件中存储的列表匹配

python - 反转列表中的元组

列表的 Python dict 到单项匹配索引的 dict

mysql - 如何在 MySQL 中获取记录数以及最小值/最大值?