首页 > 后端开发 > Python教程 > 如何查找 NumPy 数组中前 N 个最大值的索引?

如何查找 NumPy 数组中前 N 个最大值的索引?

Susan Sarandon
发布: 2024-12-06 01:38:11
原创
838 人浏览过

How Can I Find the Indices of the Top N Maximum Values in a NumPy Array?

使用 NumPy 查找多个最大值

NumPy 数组提供各种统计操作函数,包括使用 np.argmax 查找单个最大值。但是,对于需要识别前 N 个最大值的场景,np.argmax 无法满足特定要求。

解决方案:在较新的 NumPy 版本中使用 np.argpartition

在 NumPy 1.8 及更高版本中,np.argpartition 函数为这个问题提供了解决方案。通过使用此函数,您可以获得 N 个最大元素的索引。

例如,考虑一个数组 [1, 3, 2, 4, 5]。要检索四个最大元素的索引:

import numpy as np

a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])
ind = np.argpartition(a, -4)[-4:]
top_four = a[ind]    
登录后复制

这将产生以下输出:

array([1, 5, 8, 0])
array([4, 9, 6, 9])
登录后复制

其中 'ind' 代表四个最大元素的索引,并且'top_four' 是对应的值。

对有序索引进行排序输出

如果需要,您可以通过对相应的数组元素调用 np.argsort 来进一步对索引进行排序:

sorted_ind = ind[np.argsort(a[ind])]
登录后复制

这确保在中获得前 k 个元素排序顺序,时间复杂度为 O(n k log k)。

以上是如何查找 NumPy 数组中前 N 个最大值的索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板