【发布时间】:2015-04-24 01:25:51
【问题描述】:
我有一个形状为 N,2 和 N>10000 的 numpy 数组。我是我的第一列,例如第二列中有 6 个类值(例如 0.0,0.2,0.4,0.6,0.8,1.0)我有浮点值。现在我想计算第一列的所有不同类别的第二列的平均值,得到每个类别的 6 个平均值。
是否有一种 numpy 方法可以做到这一点,以避免手动循环,尤其是在 N 非常大的情况下?
【问题讨论】:
-
这样的问题,你可能想使用
pandas,见:pandas.pydata.org/pandas-docs/dev/groupby.html -
这是一个“groupby/aggregation”操作。问题是如此接近与stackoverflow.com/questions/28597383/… 重复。我在那里提供的
pandas代码也应该在这里工作(median到mean的明显变化)。您也可以按照那里的建议使用scipy.ndimage.labeled_comprehension,但您必须将第一列转换为整数(例如idx = (5*data[:, 0]).astype(int)。 -
但是如果你不想要任何额外的依赖,@Jaime 的回答是一个不错的选择。
-
labeled_comprehension 方法似乎最适合我的应用程序,因为我可以用其他聚合替换平均值,并且不需要额外的包。非常感谢。
标签: arrays numpy column-aggregation