当前位置:  开发笔记 > 编程语言 > 正文

如何在python中获取数组中多个最大值的值

如何解决《如何在python中获取数组中多个最大值的值》经验,为你挑选了1个好方法。

我有一个阵列

a =[0,  0, 15, 17, 16, 17, 16, 12, 18, 18]

我试图找到有max计数的元素值.如果有平局,我希望所有具有相同max计数的元素.

你可以看到有两个0,两个16,两个17,两个18一个15和一个12所以我想要的东西会返回 [0, 16, 17, 18](顺序不重要,但我不想要15或12)

我正在做np.argmax(np.bincount(a))argmax只返回一个元素(根据其文档)所以我只得到第一个为0

我尝试过 np.argpartition(values, -4)[-4:]这种方法,但实际上我不知道有4个元素具有相同的计数!(也许我在这附近!!!灯泡刚刚开始!!!)



1> Padraic Cunn..:

您可以使用 np.unique来获取计数和唯一元素的数组,然后拉出计数等于max的元素:

import numpy as np

a = np.array([0, 0, 15, 17, 16, 17, 16, 12, 18, 18])

un,  cnt = np.unique(a, return_counts=True)

print(un[cnt == cnt.max()])
[ 0 16 17 18]

un是唯一的元素,cnt是每个元素的频率/数量:

In [11]: a = np.array([0, 0, 15, 17, 16, 17, 16, 12, 18, 18])

In [12]: un,  cnt = np.unique(a, return_counts=True)

In [13]: un, cnt
Out[13]: (array([ 0, 12, 15, 16, 17, 18]), array([2, 1, 1, 2, 2, 2]))

cnt == cnt.max() 将为我们提供掩码来拉出等于最大值的元素:

In [14]: cnt == cnt.max()
Out[14]: array([ True, False, False,  True,  True,  True], dtype=bool)

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有