【发布时间】:2020-10-15 17:46:29
【问题描述】:
我正在尝试学习 numpy 机制。我有一个高维的 numpy 数组。我想要的是获得一个数组或列表,它存储按标签分组的每列的总和。例如,特征如下所示:
array([[-16.99176812, -2.36223789, -1.87838669, ..., 0.06839992,
-0.03640378, -0.54913372],
[-17.83648228, 1.28261146, -0.62738817, ..., 0.08641197,
-0.09980481, -0.08203106],
[-16.63403339, 4.33705931, -2.29143763, ..., -0.2422984 ,
-0.59537268, -0.35633719],
...,
并且标签是从不同的数组中给出的,范围从 0 到 9:
array([6, 0, 1, ..., 1, 2, 2]
如何使用 numpy 根据标签获取每列的总和?我通过创建一个将这两个数组组合在一起并使用 df.groupby().mean() 的数据框来使用 pandas 完成此操作。然而,为了实现我的目标输出,如果我首先将它们传输到数据帧并将输出转换回 numpy 数组,这将变得乏味。提前谢谢!
【问题讨论】:
-
你能提供一个更小的数据集来验证解决方案吗?您可能可以使用
np.add.at -
将输入转换为数据帧并取回 numpy 数组只需要您多花一行代码。除非您需要终极的硬核 numpy 解决方案,否则我认为纯 numpy 版本在编码方面不会更短。
-
@user3483203 数据集实际上相当大。正如 Hoang 所说,我将使用 pandas,因为它似乎是解决问题的最简单方法
-
@QuangHoang 是的,我注意到使用 pandas 可能是解决它的最简单方法。只是想知道 numpy 库是否包含任何此类函数
标签: python arrays numpy group-by