Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencari Indeks Baris Berbilang Nilai dengan Cekap dalam Tatasusunan NumPy?
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]
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]
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)]
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]])
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]
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!