可以使用 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
還有自訂解決方案,例如:
以上是如何有效率地找出 NumPy 陣列中前 N 個最大值的索引?的詳細內容。更多資訊請關注PHP中文網其他相關文章!