Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencari Indeks Nilai N Terbesar Teratas dengan Cekap dalam Tatasusunan NumPy?

Bagaimana untuk Mencari Indeks Nilai N Terbesar Teratas dengan Cekap dalam Tatasusunan NumPy?

Susan Sarandon
Susan Sarandonasal
2024-12-25 03:59:08515semak imbas

How to Efficiently Find the Indices of the Top N Largest Values in a NumPy Array?

Mengenal pasti Indeks Nilai N Teratas dalam Tatasusunan NumPy

Mendapatkan indeks nilai maksimum dalam tatasusunan NumPy adalah mungkin dengan fungsi np.argmax. Walau bagaimanapun, untuk mendapatkan semula indeks berbilang nilai maksimum, artikel ini meneroka pendekatan alternatif.

Versi NumPy Terkini (1.8 dan seterusnya) menampilkan fungsi argpartition, yang boleh mendapatkan semula indeks mengikut keadaan tertentu. Untuk mendapatkan indeks bagi n elemen terbesar, gunakan fungsi ini dengan argumen negatif untuk n, menunjukkan isihan menurun.

>>> 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

Tidak seperti argsort, argpartition beroperasi secara linear dalam kes yang paling teruk, tetapi ia tidak kembali indeks yang disusun. Untuk mengisihnya, gunakan np.argsort pada tatasusunan terbahagi:

>>> sorted_ind = ind[np.argsort(a[ind])]

Sebagai alternatif, manfaatkan keupayaan pengindeksan lanjutan NumPy:

>>> descending_order = np.argsort(a)[::-1] # Indices of elements in descending order
>>> top_n = descending_order[:n] # Top n indices

Penyelesaian tersuai juga wujud, seperti:

  • Mengisih tatasusunan dan memilih n atas elemen
  • Membandingkan elemen secara berulang dan mengemas kini senarai indeks
  • Menggunakan fungsi max() dengan tugasan bersyarat

Atas ialah kandungan terperinci Bagaimana untuk Mencari Indeks Nilai N Terbesar Teratas dengan Cekap dalam Tatasusunan NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn