Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Menduduki Elemen dengan Cekap dalam Tatasusunan NumPy Tanpa Isih Berganda?

Bagaimana Menduduki Elemen dengan Cekap dalam Tatasusunan NumPy Tanpa Isih Berganda?

DDD
DDDasal
2024-10-27 04:35:30851semak imbas

How to Efficiently Rank Elements in a NumPy Array Without Double Sorting?

Kedudukan Tatasusunan yang Cekap dalam Python/NumPy tanpa Isih Berganda

Dalam analisis data dan pembelajaran mesin, kedudukan item dalam tatasusunan ialah operasi biasa . Walau bagaimanapun, adalah tidak cekap untuk mengisih tatasusunan dua kali untuk mencapai ini, kerana ia meningkatkan kerumitan pengiraan. Berikut ialah pendekatan yang lebih optimum menggunakan NumPy:

Untuk menyusun item dalam tatasusunan tanpa menggunakan dua kali, ikut langkah berikut:

  1. Gunakan argsort sekali untuk mendapatkan susunan elemen tatasusunan.
  2. Gunakan argsort sekali lagi untuk menentukan kedudukan pesanan yang diperoleh dalam langkah 1.

Contohnya:

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

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

order = array.argsort()
ranks = order.argsort()

print("Original Array:", array)
print("Ordering:", order)
print("Ranks:", ranks)</code>

Output:

Original Array: [4 2 7 1]
Ordering: [3 1 2 0]
Ranks: [2 1 3 0]

Sebagai anda boleh lihat, tatasusunan kedudukan menyediakan kedudukan untuk setiap elemen dalam tatasusunan asal tanpa memerlukan pengisihan berganda.

Perhatikan bahawa, untuk tatasusunan dimensi 2D atau lebih tinggi, adalah penting untuk menentukan paksi yang betul untuk digunakan untuk mengisih mengikut menyediakan hujah paksi untuk argsort.

Atas ialah kandungan terperinci Bagaimana Menduduki Elemen dengan Cekap dalam Tatasusunan NumPy Tanpa Isih Berganda?. 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