Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh mengindeks tatasusunan NumPy 2D menggunakan dua senarai indeks, dan apakah penyelesaian kepada isu penyiaran?
Dalam NumPy, terdapat pelbagai cara untuk mengindeks tatasusunan 2D menggunakan dua senarai indeks, satu untuk baris dan satu untuk lajur. Mari kita terokai kaedah ini dan menangani isu penyiaran.
Untuk mengindeks tatasusunan 2D, x, menggunakan dua tatasusunan pengindeksan, row_indices dan col_indices, anda hanya boleh menggunakan sintaks berikut:
<code class="python">x_indexed = x[row_indices, col_indices]</code>
Walau bagaimanapun, ini mungkin menghadapi ralat penyiaran jika bentuk row_indices dan col_indices tidak serasi untuk penyiaran. Untuk mengatasinya, anda boleh menggunakan np.ix untuk mengendalikan penyiaran.
<code class="python">x_indexed = x[np.ix_(row_indices, col_indices)]</code>
Anda juga boleh menggunakan boolean mask untuk pemilihan baris dan lajur. Buat dua topeng boolean, row_mask dan col_mask, dengan True mewakili elemen yang akan dipilih.
Kemudian, anda boleh menggunakan sintaks berikut:
<code class="python">x_indexed = x[row_mask, col_mask]</code>
Diberikan x, row_indices dan col_indices:
<code class="python">x = np.random.randint(0, 10, size=(5, 8)) row_indices = [2, 1, 4] col_indices = [3, 7] # Using broadcasting with indexing arrays x_indexed_broadcasting = x[np.ix_(row_indices, col_indices)] # Using boolean masks row_mask = np.array([False] * 5, dtype=bool) row_mask[[2, 1, 4]] = True col_mask = np.array([False] * 8, dtype=bool) col_mask[[3, 7]] = True x_indexed_masks = x[row_mask, col_mask] print(x_indexed_broadcasting) print(x_indexed_masks)</code>
Kedua-dua pendekatan menghasilkan hasil yang sama:
[[4 7] [7 7] [2 1]]
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengindeks tatasusunan NumPy 2D menggunakan dua senarai indeks, dan apakah penyelesaian kepada isu penyiaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!