Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengindeks Tatasusunan NumPy 2D Menggunakan Dua Senarai Indeks?

Bagaimana untuk Mengindeks Tatasusunan NumPy 2D Menggunakan Dua Senarai Indeks?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 02:40:30774semak imbas

How to Index a 2D NumPy Array Using Two Lists of Indices?

Mengindeks Tatasusunan NumPy 2D dengan 2 Senarai Indeks

Menggunakan np.ix_ dengan Tatasusunan Pengindeksan

Untuk mengindeks tatasusunan NumPy 2D menggunakan dua senarai daripada indeks, tatasusunan,, kita boleh menggunakan fungsi np.ix_ bersama-sama dengan tatasusunan pengindeksan.

<code class="python">x_indexed = x[np.ix_(row_indices, col_indices)]</code>

Menggunakan np.ix_ dengan Topeng

Sebagai alternatif, kita boleh menggunakan np.ix_ dengan boolean mask untuk memilih dan mengindeks tatasusunan:

<code class="python">row_mask = [0, 1, 1, 0, 0, 1, 0]
col_mask = [1, 0, 1, 0, 1, 1, 0, 0]

x_indexed = x[np.ix_(row_mask, col_mask)]</code>

Contoh

Pertimbangkan contoh berikut:

<code class="python">import numpy as np

x = np.random.randint(0, 6, (20, 8))

row_indices = [4, 2, 18, 16, 7, 19, 4]
col_indices = [1, 2]</code>

Untuk mengindeks x menggunakan senarai yang disediakan, kita boleh gunakan sama ada kaedah:

<code class="python"># Using np.ix_ with indexing arrays
x_indexed = x[np.ix_(row_indices, col_indices)]

# Using np.ix_ with masks
row_mask = np.isin(np.arange(x.shape[0]), row_indices)
col_mask = np.isin(np.arange(x.shape[1]), col_indices)

x_indexed = x[np.ix_(row_mask, col_mask)]</code>

Kedua-dua kaedah akan menghasilkan tatasusunan diindeks yang diingini:

<code class="python">>>> x_indexed
array([[76, 56],
       [70, 47],
       [46, 95],
       [76, 56],
       [92, 46]])</code>

Atas ialah kandungan terperinci Bagaimana untuk Mengindeks Tatasusunan NumPy 2D Menggunakan Dua Senarai Indeks?. 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