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

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

Patricia Arquette
リリース: 2024-10-27 00:32:31
オリジナル
941 人が閲覧しました

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

NumPy: 行ごとの特定の列インデックスの効率的な選択

データの選択は、データ分析において重要な操作です。 NumPy 配列を操作する場合、各行から特定の列を選択するのが一般的なタスクになることがあります。この選択はさまざまな方法で実行できますが、行ごとのインデックスのリストに基づいて列を選択するには、より効率的なアプローチが必要です。

直接選択にブール配列を使用する

選択する列を示すブール配列がある場合は、直接選択を使用して目的の値を効率的に抽出できます。ブール配列は、インデックスのリストと列の範囲を比較することによって作成できます。たとえば、質問で説明されているように、行列 X とインデックス Y のリストが与えられた場合、次のようにブール配列 b を作成できます。

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

X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Y = np.array([1, 0, 2])
b = np.arange(X.shape[1])[np.isin(np.arange(X.shape[1]), Y)]</code>
ログイン後にコピー

ブール配列 b を使用すると、直接選択を実行できます。

<code class="python">result = X[np.arange(X.shape[0]), b]</code>
ログイン後にコピー

このメソッドは、ブール配列に基づいて特定の列を迅速に選択する方法を提供します。

代替メソッド

または、次の方法を使用できます。 np.arange とインデックス リスト Y に基づく直接選択。このアプローチには、インデックスの配列を作成し、それに応じて行列 X から選択することが含まれます。

<code class="python">result = X[np.arange(X.shape[0]), Y]</code>
ログイン後にコピー

結論

NumPy で行ごとに特定の列インデックスを選択することは、ブール配列を使用して効率的に行うことができます。この方法では、インデックスのリストに基づいて列を迅速かつ簡単に選択できます。大規模なデータ配列の場合、このアプローチは反復ベースの方法に比べてパフォーマンスに大きな利点をもたらします。

以上がNumPy で行ごとに特定の列インデックスを効率的に選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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