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

如何在字典遍历循环中嵌套for i in range()实现多次Bootstrapping?

多ROI Bootstrap抽样仅执行一次的问题修复

原始正常的单ROI代码

针对单个ROI执行599次Bootstrap抽样并计算均值的代码,运行正常:

boot_i = []
for i in range(599):
    boot = np.random.choice(data_rois["interoception"], size=N)
    boot = np.mean(boot)
    boot_i.append(boot)

有问题的多ROI嵌套循环代码

意图对多个ROI批量执行Bootstrap抽样,但内层循环的599次抽样未生效,仅执行了一次:

rois = ["interoception", "extero", ...] # 包含多个ROI的长列表
boot_rois = {}
for roi in rois:
    for i in range(599):
        boot = np.random.choice(data_rois[roi], size=N)
        boot = np.mean(boot)
        boot_rois[roi] = roi

问题原因&修复方案

这段代码的核心错误是:内层循环中没有收集每次抽样的结果,反而每次都把ROI名称赋值给boot_rois[roi],不仅没有保存抽样均值,还会反复覆盖。

要实现599次抽样,需要给每个ROI初始化一个空列表,把每次计算的均值添加到列表中,最后将整个列表存入字典:

修复后的代码:

rois = ["interoception", "extero", ...] # 包含多个ROI的长列表
boot_rois = {}
for roi in rois:
    # 初始化当前ROI的抽样结果列表
    roi_boot_means = []
    for i in range(599):
        boot_sample = np.random.choice(data_rois[roi], size=N)
        sample_mean = np.mean(boot_sample)
        roi_boot_means.append(sample_mean)
    # 存储当前ROI的所有抽样均值
    boot_rois[roi] = roi_boot_means

更新需求:计算599次Bootstrap抽样的标准差

后续需求调整为:基于599次Bootstrap抽样,计算每个ROI的最终标准差。用户提供的修改后代码运行正常,但可以优化逻辑,让代码更清晰易读:

用户原更新代码

boot_rois = {}
for roi in rois:
    last_boot = None
    for i in range(599):
        boot = np.random.choice(data_rois[roi], size=N)
        boot = np.std(boot)
        if(last_boot is not None):
          boot = np.std([boot,last_boot])
        
        boot_rois[roi] = boot
        last_boot = boot_rois[roi]

优化后的代码

先收集599次抽样的标准差,再统一计算整体标准差,逻辑更直观:

boot_rois = {}
for roi in rois:
    roi_std_samples = []
    for i in range(599):
        # 抽取Bootstrap样本并计算该样本的标准差
        boot_sample = np.random.choice(data_rois[roi], size=N)
        sample_std = np.std(boot_sample)
        roi_std_samples.append(sample_std)
    # 计算599次抽样标准差的整体标准差
    boot_rois[roi] = np.std(roi_std_samples)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:52:35