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
Lepaskan: 2024-12-25 03:59:08
asal
456 orang telah melayarinya

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
Salin selepas log masuk

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])]
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan