NumPy并非旨在将行分组在一起并将聚合函数应用于这些组。你可以:
- 使用
itertools.groupby
和重建数组; - 使用基于NumPy且擅长分组的Pandas;要么
- 在测试ID的数组中添加另一个维度(因此,本例将是2x3数组,因为看起来好像有两个测试)。
这是
itertools解决方案,但是您可以看到它非常复杂且效率低下。我建议其他两种方法之一。
np.array([(k, np.array(list(g), dtype=grades.dtype).view(np.recarray)['score'].mean()) for k, g in groupby(np.sort(grades, order='student').view(np.recarray), itemgetter('student'))], dtype=grades.dtype)


