使用numpy按第二列中的类聚合一列的值

时间:2015-02-22 18:33:25

标签: arrays numpy column-aggregation

我有一个形状为N,2和N> 10000的numpy数组。我是第一栏,例如第二列中的6个类值(例如0.0,0.2,0.4,0.6,0.8,1.0)我有浮点值。现在我想计算第一列的所有不同类的第二列的平均值,得到每个类的6个平均值。

有没有一种简单的方法可以做到这一点,以避免手动循环,特别是如果N非常大?

2 个答案:

答案 0 :(得分:3)

在纯粹的numpy中你会做类似的事情:

unq, idx, cnt = np.unique(arr[:, 0], return_inverse=True,
                          return_counts=True)
avg = np.bincount(idx, weights=arr[:, 1]) / cnt

答案 1 :(得分:0)

我将沃伦的答案复制到了这里,因为它最好地解决了我的问题,我想把它检查为已解决:

  

这是“groupby / aggregation”操作。问题就在于此   成为副本   getting median of particular rows of array based on index。   ...你也可以使用scipy.ndimage.labeled_comprehension   建议那里,但你必须将第一列转换为   整数(例如idx =(5 * data [:,0])。astype(int)

我做到了这一点。