ホームページ >バックエンド開発 >Python チュートリアル >特定の列に基づいて NumPy 配列要素をグループ化するにはどうすればよいですか?
NumPy の関数によるグループ化
NumPy には、要素をグループ化する操作など、配列操作のための関数がいくつか用意されています。このような操作の 1 つが groupby です。これを使用すると、指定されたキーに基づいて配列内の要素をグループ化できます。
特定の問題
次の配列 a:
について考えてみましょう。a = array([[ 1, 275], [ 1, 441], [ 1, 494], [ 1, 593], [ 2, 679], [ 2, 533], [ 2, 686], [ 3, 559], [ 3, 219], [ 3, 455], [ 4, 605], [ 4, 468], [ 4, 692], [ 4, 613]])
最初の列に基づいて 内の要素をグループ化するとします。この場合、出力は次のようになります。
array([[[275, 441, 494, 593]], [[679, 533, 686]], [[559, 219, 455]], [[605, 468, 692, 613]]], dtype=object)
Solution
NumPy には直接の groupby 関数はありませんが、これを実現することは可能です。次のアプローチを使用します:
# Sort the array by the first column a = a[a[:, 0].argsort()] # Find the unique values in the first column as keys keys = np.unique(a[:, 0]) # Create an array to hold the grouped elements grouped = [] # Iterate through the keys for key in keys: # Create a mask to select elements with the given key mask = (a[:, 0] == key) # Append the selected elements to the grouped array grouped.append(a[mask][:, 1])
このソリューションは、最初の列に基づいて配列内の要素を効率的にグループ化します。 groupby 関数は明示的に使用しません。
以上が特定の列に基づいて NumPy 配列要素をグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。