ホームページ >バックエンド開発 >Python チュートリアル >特定の列に基づいて NumPy 配列要素をグループ化するにはどうすればよいですか?

特定の列に基づいて NumPy 配列要素をグループ化するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-03 11:37:14239ブラウズ

How Can I Group NumPy Array Elements Based on a Specific Column?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。