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

Python循环迭代仅添加首个元素求助:批量生成DW值排序数组

解决方法
  • 禁止在循环中覆盖原变量y:你之前循环里执行y = y[i]会把y从多维数组/数据集变成单列的标量/一维对象,后续循环i递增时自然触发索引错误——此时y已经没有对应索引了。
  • 每次循环取y的第i列作为临时变量:
    • 若y是numpy二维数组(行=样本、列=变量),用y_col = y[:, i]提取第i列;
    • 若y是Pandas DataFrame(触发KeyError的场景),用y_col = y.iloc[:, i]或y_col = y[y.columns[i]]提取,避免直接整数索引导致的键匹配问题。
  • 初始化结果容器并批量存储:
    • 用numpy数组:如果要存10000个DW值,先初始化d_test_hats = np.zeros(10000),循环中把每列计算出的d赋值给d_test_hats[i];
    • 用列表:初始化d_test_hats = [],循环中执行d_test_hats.append(d),最后再转成数组。
  • 示例代码框架(numpy场景):
import numpy as np

# 假设y是shape=(样本数, 10000)的二维数组
d_test_hats = np.zeros(10000)

for i in range(10000):
    y_col = y[:, i]  # 提取第i列,不修改原y
    # 执行你的DW计算逻辑:得到当前列的d值
    # betas = ... 
    # epsilon_hat = ...
    # d = ...
    d_test_hats[i] = d

# 生成排序数组
sorted_d_array = np.sort(d_test_hats)
  • 效率优化:如果DW计算逻辑支持向量化,直接对整个y数组批量运算,彻底替代循环,比如:
# 示例向量化DW计算(需根据实际公式调整)
epsilon_hat = y - np.dot(X, betas)  # X为特征矩阵
diff_epsilon = np.diff(epsilon_hat, axis=0)
d_values = np.sum(diff_epsilon**2, axis=0) / np.sum(epsilon_hat**2, axis=0)
sorted_d_array = np.sort(d_values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:40:31