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

如何以向量化方式将pandas Series元素复制到Python内置array?

向量化复制pandas Series到Python内置array的方法

要实现无循环的向量化复制,且不改变原array的内存地址,可以利用numpy的内存视图特性,直接操作array的底层内存,避免Python级别的循环开销。

解决方案代码

from array import array
import pandas as pd
import numpy as np

# 初始化示例数据
s = pd.Series(range(0, 10, 2)); s += 0.1
a = array('d', [0.0]*10)

# 向量化替换array的值(核心代码)
# 将array转为numpy内存视图,共享原内存空间
np_array_view = np.ctypeslib.as_array(a)
# 直接赋值Series的底层numpy数组
np_array_view[:len(s)] = s.values

关键说明

  1. 内存共享,不新建array:np.ctypeslib.as_array(a)会生成一个与原array共享内存的numpy数组视图,赋值操作直接修改原array的内容,不会改变其内存地址,完全符合你需要保留缓冲区地址的场景。
  2. 向量化操作:赋值过程是numpy底层的C级操作,没有Python循环,处理大数据量时性能远高于手动循环。
  3. 长度适配:如果Series长度与array一致,可直接写np_array_view[:] = s.values;如果长度不同,用切片[:len(s)]控制赋值范围。

验证结果

执行后打印array a,会得到预期的赋值结果:

print(a)
# 输出:array('d', [0.1, 2.1, 4.1, 6.1, 8.1, 0.0, 0.0, 0.0, 0.0, 0.0])

内容的提问来源于stack exchange,提问作者S.V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:59:56