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