首頁 >後端開發 >Python教學 >如何使用「np.ix_」為具有兩個索引清單的 2D NumPy 陣列建立索引?

如何使用「np.ix_」為具有兩個索引清單的 2D NumPy 陣列建立索引?

Linda Hamilton
Linda Hamilton原創
2024-10-26 08:27:301001瀏覽

How to Index a 2D NumPy Array with Two Lists of Indices Using `np.ix_`?

使用2 個索引清單對2D Numpy 陣列建立索引

問題陳述

使用下列方法對2D Numpy數組建立索引兩個單獨的索引列表並不像使用單一索引列表那麼簡單。在處理大型數組時,這可能具有挑戰性,因為它需要廣播和重塑數組才能實現所需的索引選擇。

使用np.ix_ 和廣播的解決方案

Numpy 中的np.ix_ 函數可用於建立索引數組的元組,這些索引數組可以相互廣播以實現所需的索引模式。這種方法可以保持可讀性並促進程式碼優化。

要使用np.ix_ 執行索引,請按照以下步驟操作:

  1. 使用np.ix_ 以及行索引和列索引建立兩個廣播數組.
  2. 使用這些索引數組在原始數組中選擇所需的行和列。

範例程式碼

以下程式碼示範如何使用np.ix_ 進行基於索引的選擇:

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

# Create indices
row_indices = [4, 2, 18, 16, 7, 19, 4]
col_indices = [1, 2]

# Create broadcasting arrays
index_tuples = np.ix_(row_indices, col_indices)

# Perform indexing
x_indexed = x[index_tuples]</code>

範例輸出

>>> x_indexed
array([[76, 56],
       [70, 47],
       [46, 95],
       [76, 56],
       [92, 46]])

其他注意事項

替代語法:
使用np.ix_ 的替代語法是使用: 運算子指定沿軸的所有索引,除非另有指定。

廣播:
需要注意的是,廣播是沿著輸入陣列的軸發生的。因此,沿每個軸的索引數組的大小應與輸入數組的相應維度相符。

最佳化:
使用 np.ix_ 和廣播進行索引可以提供顯著的效能優勢與迭代索引或使用布林遮罩相比。這在處理大型數組時特別有利。

以上是如何使用「np.ix_」為具有兩個索引清單的 2D NumPy 陣列建立索引?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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