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