ホームページ > バックエンド開発 > Python チュートリアル > NumPy 配列の行ごとに特定の列インデックスを効率的に選択する方法は?

NumPy 配列の行ごとに特定の列インデックスを効率的に選択する方法は?

Linda Hamilton
リリース: 2024-10-30 21:51:30
オリジナル
341 人が閲覧しました

How to Efficiently Select Specific Column Indexes per Row in NumPy Arrays?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート