ホームページ  >  記事  >  バックエンド開発  >  2 つのインデックス リストを使用して 2D NumPy 配列にインデックスを付けるにはどうすればよいですか?またブロードキャストの問題の解決策は何ですか?

2 つのインデックス リストを使用して 2D NumPy 配列にインデックスを付けるにはどうすればよいですか?またブロードキャストの問題の解決策は何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-26 15:06:02746ブラウズ

How can I index a 2D NumPy array using two lists of indices, and what are the solutions to broadcasting issues?

2 つのインデックス リストを使用して 2D Numpy 配列にインデックスを付ける

NumPy では、2 つのインデックスを使用して 2D 配列にインデックスを付けるさまざまな方法があります。インデックスのリスト。1 つは行用、もう 1 つは列用です。これらのメソッドを検討し、ブロードキャストの問題に対処しましょう。

インデックス配列でのブロードキャストの使用

2 つのインデックス配列 row_indices とcol_indices を使用して 2D 配列 x にインデックスを付けるには、単に次の構文:

<code class="python">x_indexed = x[row_indices, col_indices]</code>

ただし、row_indices とcol_indices の形状がブロードキャストと互換性がない場合、ブロードキャスト エラーが発生する可能性があります。これを解決するには、np.ix を使用してブロードキャストを処理します。

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

ブール マスクの使用

行と列の選択にブール マスクを使用することもできます。 2 つのブール マスク、row_mask とcol_mask を作成します。True は選択される要素を表します。

次に、次の構文を使用できます:

<code class="python">x_indexed = x[row_mask, col_mask]</code>

例:

Given x、row_indices、col_indices:

<code class="python">x = np.random.randint(0, 10, size=(5, 8))
row_indices = [2, 1, 4]
col_indices = [3, 7]

# Using broadcasting with indexing arrays
x_indexed_broadcasting = x[np.ix_(row_indices, col_indices)]

# Using boolean masks
row_mask = np.array([False] * 5, dtype=bool)
row_mask[[2, 1, 4]] = True
col_mask = np.array([False] * 8, dtype=bool)
col_mask[[3, 7]] = True
x_indexed_masks = x[row_mask, col_mask]

print(x_indexed_broadcasting)
print(x_indexed_masks)</code>

出力:

どちらのアプローチでも同じ結果が得られます:

[[4 7]
 [7 7]
 [2 1]]

以上が2 つのインデックス リストを使用して 2D NumPy 配列にインデックスを付けるにはどうすればよいですか?またブロードキャストの問題の解決策は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。