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

选择性累积和的向量化实现:Pandas Series与NumPy数组处理

嘿,我来帮你搞定这个向量化的实现!咱们完全不用写显式循环,靠Pandas和NumPy的内置向量化操作就能高效完成需求,具体步骤如下:

1. 先明确需求对应的逻辑

比如你的输入里,series_example[0]是[1,3,2],对应arr_example的索引1(值0.5)、3(值0.1)、2(值0.25),累积和就是0.5 → 0.5+0.1=0.6 → 0.6+0.25=0.85,和你给出的示例输出完全匹配。

2. 向量化实现代码

先导入需要的库,然后定义你的输入数据:

import pandas as pd
import numpy as np

series_example = pd.Series([[1, 3, 2], [1, 2]])
arr_example = np.array([3., 0.5, 0.25, 0.1])

接下来是核心的向量化操作:

# 第一步:展开Series中的每个索引列表,同时保留原Series的索引(用来分组)
expanded_indices = series_example.explode().astype(int)

# 第二步:根据展开后的索引,提取arr_example中对应的数值
corresponding_values = arr_example[expanded_indices]

# 第三步:按原索引分组,计算每组的累积和,再把每组的结果重新组合成列表
result_series = corresponding_values.groupby(expanded_indices.index).cumsum()\
                                    .groupby(expanded_indices.index).apply(list)

运行后,result_series就是你要的结果:

print(result_series)
# 输出:
# 0    [0.5, 0.6, 0.85]
# 1      [0.5, 0.75]
# dtype: object

3. 为什么这是向量化方案?

这里的explode、数组索引取值、groupby和cumsum都是Pandas/NumPy底层优化过的向量化操作,没有显式的Python循环(比如for遍历每个元素),在数据量较大时,效率会比非向量化的实现高出一个数量级。如果你的输入Series行数特别多,这个方案的优势会非常明显~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:10:34