首頁 >後端開發 >Python教學 >如何有效率地找出 NumPy 陣列中前 N 個最大值的索引?

如何有效率地找出 NumPy 陣列中前 N 個最大值的索引?

Susan Sarandon
Susan Sarandon原創
2024-12-25 03:59:08460瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn