Bagaimana untuk Kedudukan Item Tatasusunan dalam Python/NumPy Dengan Cekap Tanpa Isih Berganda?

Susan Sarandon
Lepaskan: 2024-10-28 21:29:30
asal
832 orang telah melayarinya

How to Rank Array Items in Python/NumPy Efficiently Without Double Sorting?

Kedudukan Item Tatasusunan yang Lebih Pantas dalam Python/NumPy tanpa Isih Berganda

Dalam analisis data dan pembelajaran mesin, selalunya perlu untuk meletakkan kedudukan item dalam tatasusunan berdasarkan nilai mereka. Mengisih dua kali tatasusunan untuk pemeringkatan boleh memakan masa.

Pendekatan Awal

Kaedah biasa ditunjukkan di bawah:

<code class="python">import numpy as np

# Sample array
array = np.array([4, 2, 7, 1])

# Temporary array for sorting
temp = array.argsort()

# Rank computation
ranks = np.arange(len(array))[temp.argsort()]</code>
Salin selepas log masuk

Pendekatan ini melibatkan dua operasi pengisihan, meningkatkan kerumitannya.

Penyelesaian Dioptimumkan

Untuk mengelakkan pengisihan berganda, kita boleh memanfaatkan fungsi argsort() NumPy dua kali:

<code class="python">array = np.array([4, 2, 7, 1])

# First argsort to obtain element order
order = array.argsort()

# Second argsort to obtain ranking
ranks = order.argsort()</code>
Salin selepas log masuk

Penjelasan

Pertama, kami menggunakan argsort() untuk mendapatkan susunan elemen tatasusunan. Kemudian, kami menggunakan argsort() sekali lagi pada susunan yang terhasil, yang memberikan kami kedudukan.

Kesimpulan

Teknik yang dioptimumkan ini meningkatkan dengan ketara kelajuan ranking item tatasusunan dengan mengelakkan pengisihan yang tidak perlu. Untuk tatasusunan berdimensi tinggi, gunakan argumen paksi dalam argsort untuk menentukan paksi untuk mengisih.

Atas ialah kandungan terperinci Bagaimana untuk Kedudukan Item Tatasusunan dalam Python/NumPy Dengan Cekap Tanpa Isih Berganda?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!