首頁 > 後端開發 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板