Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengindeks Tatasusunan NumPy 2D dengan Cekap Menggunakan Dua Senarai Indeks?

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

Patricia Arquette
Patricia Arquetteasal
2024-10-27 04:54:02322semak imbas

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

Mengindeks Tatasusunan NumPy 2D Menggunakan Dua Senarai Indeks

Objektifnya adalah untuk melaksanakan pengindeksan pada tatasusunan NumPy 2D menggunakan dua senarai indeks yang disediakan, satu untuk baris dan satu untuk lajur. Hasil yang diinginkan adalah untuk mendapatkan subset tatasusunan berdasarkan indeks yang ditentukan dengan cekap.

Menggunakan np.ix_

Untuk mencapai ini, kita boleh memanfaatkan fungsi np.ix_ daripada NumPy. np.ix_ mencipta tuple tatasusunan pengindeksan yang boleh digunakan untuk penyiaran. Begini cara ia berfungsi:

Dengan Tatasusunan Pengindeksan

Pilihan:

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

Ini menghasilkan satu tuple mengindeks tatasusunan berdasarkan row_indices dan col_indices. Menyiarkan tatasusunan ini membolehkan kami mengindeks ke dalam x dan mengekstrak subset yang diingini.

Tugasan:

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

Ini memberikan nilai yang ditentukan ke dalam kedudukan yang diindeks dalam x.

Dengan Topeng

Pilihan:

<code class="python">row_mask = np.array([True, False, False, True, False], dtype=bool)
col_mask = np.array([False, True, True, False, False], dtype=bool)

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

Di sini, kami menggunakan topeng boolean (row_mask dan col_mask) untuk menentukan baris dan lajur yang hendak dipilih.

Tugasan:

<code class="python">x[np.ix_(row_mask, col_mask)] = value</code>

Ini memberikan nilai kepada kedudukan bertopeng dalam x.

< h3>Sample Run

Pertimbangkan tatasusunan dan senarai indeks berikut:

<code class="python">x = np.random.random_integers(0, 5, (20, 8))

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

Menggunakan np.ix_, kita boleh mengindeks ke dalam x:

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

print(x_indexed)

# Output:
# [[76 56]
#  [70 47]
#  [46 95]
#  [76 56]
#  [92 46]]</code>

Ini memberikan kita subset tatasusunan yang dikehendaki dengan baris dan lajur yang dipilih berdasarkan indeks yang disediakan.

Atas ialah kandungan terperinci Bagaimana untuk Mengindeks Tatasusunan NumPy 2D dengan Cekap 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