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

Python如何将列表分散元素合并为单个数组以查询最小值及对应索引

问题解决说明

错误原因

你当前的mean1变量在每次外层i循环中都会被覆盖为单个浮点数值,后续转成numpy数组也只有1个元素,之前循环生成的均值没有被保存下来,才会出现每次np.size(mean1)返回1的情况。此外你原来把求均值的逻辑写在了内层e循环中,每次新增一个MSE值就重复计算均值,也属于冗余逻辑。

修改方案

你需要提前在所有循环的外侧初始化一个列表,用来存储每轮i循环生成的均值,全部计算完成后再统一转成numpy数组即可,修改后的代码如下:

import numpy as np

# 第一步:外层提前初始化存储所有均值的列表
all_means = []

for i in range(0,151):
    mse=[]
    for e in eval_indices:
        # 定义当前折的验证集
        eval_set= z[e]

        # 生成训练集掩码,排除验证集索引
        mask_eval = np.ones(z.shape[0], bool)
        mask_eval[e] = False

        # 按掩码提取训练集
        train_set = z[mask_eval]
        # 计算回归系数w
        y=train_set[:,-1]
        x=train_set[:,:-1]
        I=np.identity(n=z.shape[1]-1, dtype=np.int8)
        w=np.linalg.inv((i*I)+(np.transpose(x)@x))@np.transpose(x)@y

        # 计算当前折的MSE
        eval_y=eval_set[:,-1]
        eval_x=eval_set[:,:-1]
        mse_tst=1/(2*len(eval_set))*(np.transpose(eval_y-(eval_x@w))@(eval_y-(eval_x@w))) 
        mse.append(mse_tst)
    # 第二步:当前i对应的所有折验证完后,计算平均MSE并存入列表
    current_mean = np.mean(mse)
    all_means.append(current_mean)

# 第三步:所有循环结束后转成numpy数组
mean_array = np.array(all_means)
# 此时打印的size就是151,符合预期
print(np.size(mean_array))

求最小值及对应索引

直接调用numpy内置方法即可:

min_value = np.min(mean_array)
min_index = np.argmin(mean_array)
print(f"最小值为{min_value},对应索引为{min_index}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:57:03