我有一个形状为N,2和N> 10000的numpy数组。我是第一栏,例如第二列中的6个类值(例如0.0,0.2,0.4,0.6,0.8,1.0)我有浮点值。现在我想计算第一列的所有不同类的第二列的平均值,得到每个类的6个平均值。
有没有一种简单的方法可以做到这一点,以避免手动循环,特别是如果N非常大?
答案 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)
我做到了这一点。