「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > NumPy で行ごとに特定の列インデックスを効率的に選択する方法は?

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

2024 年 11 月 1 日に公開
ブラウズ:398

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

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

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

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

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

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)]

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

result = X[np.arange(X.shape[0]), b]

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

代替方法

代わりに、np.arange を使用し、インデックス リスト Y に基づいて直接選択することもできます。このアプローチには、インデックスの配列を作成し、インデックスから選択することが含まれます。したがって、行列 X:

result = X[np.arange(X.shape[0]), Y]

結論

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3