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
Susan Sarandonasal
2024-12-06 01:38:11880semak imbas

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]    

Ini akan menghasilkan output berikut:

array([1, 5, 8, 0])
array([4, 9, 6, 9])

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

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!

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