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

如何避免Python数据处理代码中多次调用append方法?

优化方案:减少/移除append的实现方法

你这段代码的两层append都是用于收集循环计算结果,完全可以通过列表推导式、numpy预分配数组两种方式去掉append操作,优化后的代码更简洁,性能也更好。另外注意你原代码存在缩进错误:A_all.append 应该缩进至第一层for循环内部,否则只会把最后一个item的计算结果存入列表,以下优化方案已经修正了该问题。

方案1:列表推导式实现(完全移除append)

直接把两层循环逻辑写在列表推导式中,不需要手动声明空列表、执行append操作:

import numpy as np
# 注:iter、boots、get_corr为你预先定义好的变量/函数
items = [a1,a2,a3,a4,a5,a6,a7]
n_col = np.shape(items[0])[1]

A_all = [
    np.mean([
        np.mean(get_corr(item[:, np.random.choice(n_col, boots)].T))
        for _ in range(iter)
    ])
    for item in items
]

方案2:numpy预分配数组实现(适合大样本高性能需求)

如果你的iter、boots参数数值较大,预分配numpy数组直接下标赋值的性能比列表操作更高,全程无append:

import numpy as np
items = [a1,a2,a3,a4,a5,a6,a7]
n_col = np.shape(items[0])[1]
# 预分配结果数组,长度和items数量一致
A_all = np.zeros(len(items))

for t, item in enumerate(items):
    # 预分配当前item的bootstrap采样结果数组
    bs_res = np.zeros(iter)
    for i in range(iter):
        idx_BS = np.random.choice(n_col, boots)
        corr_atra = get_corr((item[:,idx_BS]).T)
        bs_res[i] = np.mean(corr_atra)
    A_all[t] = bs_res.mean()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:51:03