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

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

Susan Sarandon
Susan Sarandon原创
2024-12-06 01:38:11916浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn