NumPy 配列の行ごとに特定の列インデックスを効率的に選択する
NumPy 行列を使用する場合、特定の列インデックスを抽出する必要があるシナリオが発生する場合があります。インデックスのリストに基づいた行ごとの列数。従来の反復手法を使用すると、大規模なデータセットの場合は非効率になる可能性があります。これに対処するには、パフォーマンスを最適化するための代替ソリューションを検討します。
1 つのアプローチには、ブール配列を使用した直接選択が含まれます。元の行列 a と同じ形状のブール行列 b を考えてみましょう。 b の各列は、a からその列を選択するかどうかを示す条件を表します。ブール型インデックスを利用すると、a[b] から直接目的の列値を取得できます。
たとえば、行列 a とブール配列 b が与えられた場合、
<code class="python">a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) b = np.array([[False, True, False], [True, False, False], [False, False, True]])</code>
次のように実行できます。直接選択:
<code class="python">result = a[b]</code>
この操作の結果は次の出力になります:
<code class="python">[2, 4, 9]</code>
あるいは、np.arange を利用してインデックス配列を作成し、それに対して直接選択を実行することもできます。ブール配列生成のロジックによっては、この方法でパフォーマンス上の利点が得られる場合があります。
<code class="python">result = a[np.arange(len(a)), [1, 0, 2]]</code>
このアプローチでは、ブール配列ソリューションと同じ出力が生成されます。
これらの最適化された選択手法を活用することにより、を使用すると、大規模な NumPy 配列から行ごとに特定の列インデックスを抽出する効率を大幅に向上させることができます。
以上がNumPy 配列の行ごとに特定の列インデックスを効率的に選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。