NumPy 可以按给定列对数据进行分组吗?
简介:
对数据进行分组是在许多数据分析场景中都是至关重要的操作。 NumPy是Python中一个强大的数值库,提供了各种操作数组的函数,但它缺乏专门的分组函数。本文演示了如何在 NumPy 中实现分组,而无需显式使用专用函数。
问题:
NumPy 中是否有一个函数可以按数组的大小对数组进行分组第一列,如提供的数组所示?
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)
答案:
虽然 NumPy 没有明确提供“分组依据”函数,但它提供了一种受 Eelco Hoogendoorn 启发的替代方法图书馆。此方法依赖于数组的第一列始终递增的假设。如果不是这种情况,则需要按第一列对数组进行排序:
a = a[a[:, 0].argsort()]
使用增加第一列值的假设,以下代码执行分组操作:
np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])
此代码根据第一列中的唯一值有效地将数组元素分组为子数组。每个子数组代表一个组,包含具有相同第一列值的所有元素的第二列值。
其他注意事项:
因此,NumPy 提供了一种灵活高效的方法,通过利用数组操作和排序函数来对数据进行分组,即使没有专用的分组功能。
以上是NumPy 能否根据列的唯一值有效地对数据进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!