Mendapatkan Indeks Berbilang Nilai Maksimum dalam Tatasusunan NumPy
NumPy menyediakan fungsi np.argmax yang mudah untuk mendapatkan semula indeks nilai maksimum dalam tatasusunan. Walau bagaimanapun, bagaimana jika anda perlu mencari indeks bagi nilai maksimum N teratas?
Penyelesaian
Versi NumPy terkini (1.8 dan ke atas) memperkenalkan fungsi argpartition untuk ini tujuan. Untuk mendapatkan indeks unsur N teratas, ikuti langkah berikut:
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)
Penjelasan
np.argpartition mengisih tatasusunan sebahagiannya, membahagikannya kepada dua sub- tatasusunan: sub-tatasusunan pertama mengandungi elemen N teratas (dalam kes ini, 4 elemen terbesar), dan sub-tatasusunan kedua mengandungi elemen yang tinggal. Ind tatasusunan yang dikembalikan mengandungi indeks unsur dalam subtatasusunan pertama.
Output dalam contoh ini ialah:
Indices: [1 5 8 0] Top 4 elements: [4 9 6 9]
Pengoptimuman
Jika indeks diisih juga diperlukan, anda boleh mengisihnya secara berasingan:
sorted_ind = ind[np.argsort(a[ind])]
Langkah ini memerlukan Masa O(k log k), dengan k ialah bilangan elemen teratas untuk diambil. Secara keseluruhan, pendekatan ini mempunyai kerumitan masa O(n k log k), menjadikannya cekap untuk tatasusunan besar dan nilai sederhana k.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Indeks Berbilang Nilai Maksimum dengan Cekap dalam Tatasusunan NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!