Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mengindeks tatasusunan NumPy 2D menggunakan dua senarai indeks, dan apakah penyelesaian kepada isu penyiaran?

Bagaimanakah saya boleh mengindeks tatasusunan NumPy 2D menggunakan dua senarai indeks, dan apakah penyelesaian kepada isu penyiaran?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 15:06:02755semak imbas

How can I index a 2D NumPy array using two lists of indices, and what are the solutions to broadcasting issues?

Mengindeks tatasusunan 2D Numpy dengan 2 Senarai Indeks

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.

Menggunakan Penyiaran dengan Tatasusunan Pengindeksan

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>

Menggunakan Boolean Masks

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>

Contoh:

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>

Output:

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!

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