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

如何有效率地尋找 NumPy 陣列中多個最大值的索引?

Patricia Arquette
發布: 2024-12-02 13:24:15
原創
901 人瀏覽過

How Can I Efficiently Find the Indices of Multiple Maximum Values in a NumPy Array?

檢索NumPy 數組中多個最大值的索引

NumPy 提供了一個方便的np.argmax 函數來檢索NumPy 數組中最大值的索引一個數組。但是,如果您需要找到前 N 個最大值的索引怎麼辦?

解決方案

最近的 NumPy 版本(1.8 及更高版本)為此引入了 argpartition 函數目的。若要取得前N 個元素的索引,請依照下列步驟操作:

import numpy as np

# Original array
a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])

# Find indices of top N elements (N = 4 in this case)
ind = np.argpartition(a, -4)[-4:]

# Extract top N elements
top4 = a[ind]

# Print indices and top N elements
print("Indices:", ind)
print("Top 4 elements:", top4)
登入後複製

說明

np.argpartition 將陣列進行部分排序,將其分為兩個子數組:第一個子數組包含前N 個元素(在本例中為最大的4 個元素),第二個子數組包含其餘元素。傳回的數組 ind 包含第一個子數組中元素的索引。

此範例中的輸出將是:

Indices: [1 5 8 0]
Top 4 elements: [4 9 6 9]
登入後複製

最佳化

如果還需要排序索引,可以單獨排序:

sorted_ind = ind[np.argsort(a[ind])]
登入後複製

這一步驟需要O(k log k) 時間,其中k 是要檢索的頂部元素的數量。總的來說,這種方法的時間複雜度為 O(n k log k),對於大型陣列和中等 k 值非常有效。

以上是如何有效率地尋找 NumPy 陣列中多個最大值的索引?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板