You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用np.maximum.reduceat处理二维数组,按索引提取对应最值数据

按索引分组提取数组最大值对应行数据

我拥有一个形状为(3, k)的二维float数组,其中第一行与第二行是成对的浮点数据,第三行代表索引。需要按照第三行的索引进行分组,获取每组内第一行的最大值,同时获取该最大值对应的第二行数据以及对应索引值。

示例

import numpy as np

data = np.array([[ 0.45114132,  0.31522008,  0.66176217,  0.45114132,  0.26872137],
       [11.        ,  6.        , 10.        ,  4.        ,  8.        ],
       [ 0.        ,  0.        ,  0.        ,  1.        ,  1.        ]])

# 预期输出:
array([[0.66176217, 0.45114132], [10., 4], [0, 1]])

当前尝试的方法及问题

方法1:使用np.maximum.reduceat

仅能获取第一行的分组最大值,无法同步提取对应第二行和索引数据:

indx = np.unique(data[2].astype(int),return_index=1)[1]
np.maximum.reduceat(data[0], indx)
# 输出
array([0.66176217, 0.45114132])

方法2:使用掩码筛选

无法得到正确的分组对应结果,会包含重复的最大值条目:

mask = np.maximum.reduceat(data[0], indx)
data[:, np.isin(data[0], mask)]

# 输出
array([[ 0.45114132,  0.66176217,  0.45114132],
       [11.        , 10.        ,  4.        ],
       [ 0.        ,  0.        ,  1.        ]])

需求

希望避免使用循环或列表实例化,因为处理大规模数据时这类方法效率过低。


内容的提问来源于stack exchange,提问作者ycohui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 16:33:34