gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:25:39 28 4
gpt4 key购买 nike

我有一个数组

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 个元素具有相同的计数! (也许我离这里很近!!!灯泡刚刚亮了!!!)

最佳答案

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

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)

关于python - 如何在python中获取数组中的多个最大值的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34551710/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com