You need to enable JavaScript to run this app. 基于对应价格对两组NumPy键值数组对的值求和的最优实现方法
优惠活动
大模型
产品
解决方案
定价
更多

基于对应价格对两组NumPy键值数组对的值求和的最优实现方法

两组有序价格键值数组按对应键求和的最优实现方案

以下方案均基于你给出的前置条件:第二组的所有键都存在于第一组中,第一组键为固定步长0.25的有序升序序列,无需处理额外异常场景。

前置示例输入

import numpy as np
import pandas as pd

keys1 = np.array([1.0, 1.25, 1.5, 1.75])
vals1 = np.array([1, 1, 1, 1])
keys2 = np.array([1.25, 1.5])
vals2 = np.array([1, 1])

方案1:固定步长场景最优(纯Numpy实现)

性能最高,无额外遍历开销,直接通过步长计算对应索引:

step = 0.25
# 计算keys2在keys1中的对应索引
idx = ((keys2 - keys1[0]) / step).astype(int)
# 直接叠加对应位置的值
vals1[idx] += vals2

print(tuple(vals1)) # 输出 (1, 2, 2, 1)

方案2:通用有序键场景(纯Numpy实现)

不依赖固定步长,只要第一组键为升序排列即可使用:

# 查找keys2在keys1中的对应位置
idx = np.searchsorted(keys1, keys2)
vals1[idx] += vals2

print(tuple(vals1)) # 输出 (1, 2, 2, 1)

方案3:Pandas原生实现

如果你原本就在用DataFrame处理数据,直接用索引对齐特性,代码最简洁:

s1 = pd.Series(vals1, index=keys1)
s2 = pd.Series(vals2, index=keys2)
# 按索引自动对齐相加,不存在的键填充0
res = tuple(s1.add(s2, fill_value=0).astype(int).tolist())

print(res) # 输出 (1, 2, 2, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 17:54:08