首頁 >後端開發 >Python教學 >如何使用兩個索引列表有效地索引 2D NumPy 數組?

如何使用兩個索引列表有效地索引 2D NumPy 數組?

Patricia Arquette
Patricia Arquette原創
2024-10-27 04:54:02447瀏覽

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

使用兩個索引清單對2D NumPy 陣列進行索引

目標是使用兩個提供的索引清單對2D NumPy 陣列執行索引,一個用於行,一個用於索引一個用於列。期望的結果是根據指定的索引有效地取得數組的子集。

利用 np.ix_

為了實現這一點,我們可以利用NumPy 中的 np.ix_ 函數。 np.ix_ 建立可用於廣播的索引陣列元組。它的工作原理如下:

使用索引數組

選擇:

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

這將建立一個元群組基於row_indices 和col_indices 的索引數組。廣播這些數組使我們能夠索引 x 並提取所需的子集。

賦值:

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

這會將指定的值分配到 x 中的索引位置。

帶遮罩

選擇:

<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>

這裡,我們使用布爾遮罩(row_mask 和col_mask )定義要選擇的行和列。

賦值:

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

這會將值指派給 x 中的屏蔽位置。

範例運行

考慮以下陣列和索引清單:

<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>

使用np.ix_,我們可以索引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>

這為我們提供了所需的陣列子集,其中根據提供的索引選擇了行和列。

以上是如何使用兩個索引列表有效地索引 2D NumPy 數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn