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

如何在DolphinDB中合并等长数组并按规则聚合对应数组?

使用DolphinDB内置函数实现数组合并去重并取对应最大值

需求说明

给定两组等长数组:

ap = 23 24 25 26
av = 10 20 30 40

ap2 = 24 25 26 27
av2 = 32 32 32 32

需完成两个操作:

  • 合并ap与ap2,去重后升序得到result_ap = 23 24 25 26 27
  • 对每个去重后的元素,取其在av和av2中对应值的最大值,得到result_av = 10 32 32 40 32

向量化实现方案

利用DolphinDB的字典与内置聚合函数,完全避免循环,大幅提升性能:

步骤1:构建字典存储每个ap值的最大av值

将两组数组合并为键值对,按键分组取最大值生成字典:

// 合并两组键值对列表
combined = concat(zip(ap, av), zip(ap2, av2))
// 按键分组,取每组的最大值生成字典
maxDict = dict(combined.groupby(x->x[0]).keys(), combined.groupby(x->x[0]).max(x->x[1]))

步骤2:生成去重排序后的结果数组

// 合并ap和ap2,去重后升序排序
result_ap = sort(union(ap, ap2))
// 根据result_ap匹配字典中的最大值,得到result_av
result_av = maxDict[result_ap]

完整代码验证

ap = [23,24,25,26]
av = [10,20,30,40]
ap2 = [24,25,26,27]
av2 = [32,32,32,32]

combined = concat(zip(ap, av), zip(ap2, av2))
maxDict = dict(combined.groupby(x->x[0]).keys(), combined.groupby(x->x[0]).max(x->x[1]))
result_ap = sort(union(ap, ap2))
result_av = maxDict[result_ap]

// 输出结果
print(result_ap)  // 输出:[23,24,25,26,27]
print(result_av)  // 输出:[10,32,32,40,32]

性能优势

该方案全程使用DolphinDB内置向量化函数,充分利用引擎的计算优化,避免了循环带来的高延迟,适合处理大规模数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:03:21