目標是使用兩個提供的索引清單對2D NumPy 陣列執行索引,一個用於行,一個用於索引一個用於列。期望的結果是根據指定的索引有效地取得數組的子集。
為了實現這一點,我們可以利用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中文網其他相關文章!