NumPy による効率的な配列のグループ化
NumPy は配列のグループ化のために特別に設計されたすぐに使える関数を提供していない可能性がありますが、同様のことを効果的に達成できる多用途のテクニックです。
Eelco のライブラリからインスピレーションを得た
アプローチの 1 つは、Eelco Hoogendoorn のライブラリからインスピレーションを得たもので、入力配列の最初の列が単調増加するという仮定を利用して単純化しています。 。そうでない場合は、最初に a = a[a[:, 0].argsort()] を使用して並べ替えることができます。
np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])
一意に識別されるグループ
Thisスニペットは、np.unique() を利用して最初の列の一意の値を識別し、そのインデックスを返します。これらのインデックスは、2 番目の列を各グループを表す個別のサブ配列に分割するために使用されます。
時間計算量とパフォーマンス
このメソッドは O(n) の計算量を示し、非常に複雑になります。効率的。異なるグループ サイズの配列に対する timeit の経験的な測定により、pandas、numpy-indexed、defaultdict などの他のアプローチよりもパフォーマンスが優れていることが確認されています。
代替ソリューション
提示されたアプローチを超えて, numpy_groupies などの NumPy ベースの手法をグループ化のために検討することもできます。
その他の考慮事項
入力配列の最初の列がソートされていない場合は、正確な結果を保証するために、グループ化の前にソートすることをお勧めします。 argsort などの特定の並べ替えアルゴリズムの時間計算量は O(n log(n)) であることに注意してください。
以上がNumPy 配列を効率的にグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。