ホームページ >バックエンド開発 >Python チュートリアル >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 サイトの他の関連記事を参照してください。