NumPy 中的 Group by Function
NumPy 提供了多个用于数组操作的函数,包括对元素进行分组的操作。其中一个操作是 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]])
假设您想根据第一列对 a 中的元素进行分组。在这种情况下,您期望输出为:
array([[[275, 441, 494, 593]], [[679, 533, 686]], [[559, 219, 455]], [[605, 468, 692, 613]]], dtype=object)
解决方案
虽然 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中文网其他相关文章!