Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mencari Indeks Berbilang Nilai Maksimum dengan Cekap dalam Tatasusunan NumPy?

Bagaimanakah Saya Boleh Mencari Indeks Berbilang Nilai Maksimum dengan Cekap dalam Tatasusunan NumPy?

Patricia Arquette
Lepaskan: 2024-12-02 13:24:15
asal
901 orang telah melayarinya

How Can I Efficiently Find the Indices of Multiple Maximum Values in a NumPy Array?

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

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

Pengoptimuman

Jika indeks diisih juga diperlukan, anda boleh mengisihnya secara berasingan:

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

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!

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