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

Patricia Arquette
Lepaskan: 2024-10-26 15:06:02
asal
761 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Output:

Kedua-dua pendekatan menghasilkan hasil yang sama:

[[4 7]
 [7 7]
 [2 1]]
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!