# -*- coding: utf-8 -*- import numpy as np def groupby(arr, num, *function): tmp = arr[:,np.argsort(arr[num,:])] ll = [] for i in range(len(arr)): ll.append(np.split(tmp[i,:], np.unique(tmp[num,:], return_index=True)[1])[1:]) new = np.stack(ll, axis=1) res = np.transpose(np.asanyarray([(arr[0][0], *(function[f](arr[f+1].astype(float)) for f in range(len(function)))) for arr in new])) return res
- 函数接受三个参数,一个是需要分组的数组,一个是分组依据列的位置,还有一个是分组后聚合需要的操作(可以传入多个)
- 先对依据列进行排序,然后分组,分组后对操作解包,分别应用到各个需要聚合的列



