Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencari Indeks Baris Berbilang Nilai dengan Cekap dalam Tatasusunan NumPy?

Bagaimana untuk Mencari Indeks Baris Berbilang Nilai dengan Cekap dalam Tatasusunan NumPy?

Barbara Streisand
Lepaskan: 2024-12-12 18:44:11
asal
460 orang telah melayarinya

How to Efficiently Find Row Indices of Multiple Values in a NumPy Array?

Bagaimana untuk Mencari Indeks Baris Beberapa Nilai dalam Tatasusunan NumPy?

NumPy menawarkan beberapa pendekatan untuk mencari indeks baris nilai tertentu dalam tatasusunan NumPy:

Pendekatan #1: NumPy Penyiaran

result = np.where((X==searched_values[:,None]).all(-1))[1]
Salin selepas log masuk

Pendekatan #2: Pendekatan Cekap Memori dengan np.ravel_multi_index

dims = X.max(0) + 1
out = np.where(np.in1d(np.ravel_multi_index(X.T,dims),\
                    np.ravel_multi_index(searched_values.T,dims)))[0]
Salin selepas log masuk

Pendekatan #3: Cekap Memori Pendekatan dengan np.searchsorted

dims = X.max(0) + 1
X1D = np.ravel_multi_index(X.T,dims)
searched_valuesID = np.ravel_multi_index(searched_values.T,dims)
sidx = X1D.argsort()
out = sidx[np.searchsorted(X1D,searched_valuesID,sorter=sidx)]
Salin selepas log masuk

Memahami np.ravel_multi_index

np.ravel_multi_index menukar tuple pengindeksan berbilang dimensi kepada indeks linear untuk grid. Ia menganggap setiap lajur mewakili dimensi dan menggunakan bentuk grid untuk mengira indeks linear.

Sebagai contoh, dengan X:

X = np.array([[4, 2],
              [9, 3]])
Salin selepas log masuk

dan malap = [10, 7], baris pertama daripada X (4, 2) ditukar kepada indeks linear 30. Ini sepadan dengan baris 4 dan lajur 2 pada grid:

dims = X.max(0) + 1 # [10, 7]
np.ravel_multi_index(X.T, dims) # [30, 66]
Salin selepas log masuk

Memilih Dimensi untuk Indeks Linear Unik

Untuk memastikan indeks linear yang unik, dimensi grid hendaklah ditetapkan kepada regangan maksimum setiap paksi tatasusunan input X. Ini boleh dicapai dengan menambah 1 kepada nilai maksimum setiap lajur dalam X.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Indeks Baris Berbilang Nilai 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