Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Cari Indeks Nilai Maksimum N Teratas dalam Tatasusunan NumPy?

Bagaimanakah Saya Boleh Cari Indeks Nilai Maksimum N Teratas dalam Tatasusunan NumPy?

Susan Sarandon
Lepaskan: 2024-12-06 01:38:11
asal
837 orang telah melayarinya

How Can I Find the Indices of the Top N Maximum Values in a NumPy Array?

Mencari Nilai Maksimum Berbilang dengan NumPy

Tatasusunan NumPy menawarkan pelbagai fungsi untuk operasi statistik, termasuk mencari nilai maksimum tunggal menggunakan np.argmax. Walau bagaimanapun, untuk senario yang perlu mengenal pasti nilai maksimum N teratas, terdapat keperluan khusus yang tidak dapat dipenuhi oleh np.argmax.

Penyelesaian: Menggunakan np.argpartition dalam Versi NumPy Lebih Baru

Dengan NumPy versi 1.8 dan lebih tinggi, fungsi np.argpartition menyediakan penyelesaian untuk masalah ini. Dengan menggunakan fungsi ini, anda boleh mendapatkan indeks bagi N elemen terbesar.

Sebagai contoh, pertimbangkan tatasusunan [1, 3, 2, 4, 5]. Untuk mendapatkan semula indeks empat elemen terbesar:

import numpy as np

a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])
ind = np.argpartition(a, -4)[-4:]
top_four = a[ind]    
Salin selepas log masuk

Ini akan menghasilkan output berikut:

array([1, 5, 8, 0])
array([4, 9, 6, 9])
Salin selepas log masuk

di mana 'ind' mewakili indeks empat elemen terbesar, dan 'top_four' ialah nilai yang sepadan.

Isih Indeks untuk Tertib Output

Jika perlu, anda boleh mengisih indeks selanjutnya dengan menggunakan np.argsort pada elemen tatasusunan yang sepadan:

sorted_ind = ind[np.argsort(a[ind])]
Salin selepas log masuk

Ini memastikan elemen top-k diperolehi dalam tertib diisih, dengan kerumitan masa O(n k log k).

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Indeks Nilai Maksimum N Teratas 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