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

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

Susan Sarandon
发布: 2024-12-25 03:59:08
原创
456 人浏览过

How to Efficiently Find the Indices of the Top N Largest Values in a NumPy Array?

识别 NumPy 数组中前 N 个值的索引

可以使用 np.argmax 函数获取 NumPy 数组中最大值的索引。然而,为了检索多个最大值的索引,本文探讨了替代方法。

最近的 NumPy 版本(1.8 及以上)具有 argpartition 函数,它可以根据指定条件检索索引。要获取 n 个最大元素的索引,请将此函数与 n 的负参数一起使用,表示降序排序。

>>> a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0]) # Sample array
>>> ind = np.argpartition(a, -4)[-4:] # Indices of top 4 largest elements
登录后复制

与 argsort 不同,argpartition 在最坏情况下线性运行,但它不返回排序索引。要对它们进行排序,请在分区数组上使用 np.argsort:

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

或者,利用 NumPy 的高级索引功能:

>>> descending_order = np.argsort(a)[::-1] # Indices of elements in descending order
>>> top_n = descending_order[:n] # Top n indices
登录后复制

还存在自定义解决方案,例如:

  • 对数组进行排序并选择前 n 个elements
  • 迭代比较元素并更新索引列表
  • 利用带有条件赋值的 max() 函数

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

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