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

如何保存并堆叠for循环迭代输出?numpy数组垂直堆叠求助

解决方法:收集迭代结果再垂直堆叠

你需要先创建一个空列表来存储每次循环生成的fdata,等所有迭代完成后,再用numpy.vstack()把列表里的数组一次性堆叠起来。具体步骤如下:

步骤1:初始化存储结果的列表

在所有循环开始之前,定义一个空列表,用来保存每次迭代输出的(1,3)数组:

import numpy as np  # 建议用np缩写更简洁

results = []  # 空列表,用来收集每次的fdata

步骤2:每次迭代后将结果加入列表

在你的循环内部,生成fdata之后,把它添加到results列表中:

for i in range(2):
    for j in range(i, 2):
        yparam = The_path / ("{}_Y{}{}.csv".format('Filter', i+1, j+1))
        with open(yparam, 'r', newline='') as Y_parameter_Data:
            data = np.loadtxt(Y_parameter_Data, skiprows=1, delimiter=',')
            ypar = []
            # 注意这里原来的len(3)是错误的,应该直接写range(3)
            for k in range(3):
                a = np.reshape(data[k,1::2], (1,1))
                b = np.reshape(data[k,2::2], (1,1))
                ypar.append(a + j*b)
            fdata = np.array(ypar).reshape(1, -1)  # 简化写法
            # 把当前迭代的fdata加入结果列表
            results.append(fdata)

步骤3:最终堆叠生成目标数组

所有循环结束后,用np.vstack()把列表里的所有数组垂直堆叠:

final_array = np.vstack(results)
print(final_array.shape)  # 应该输出(3,3),符合你的需求

额外小提示

  • 你代码里的for k in range(0, len(3))是语法错误,len()函数只能用于可迭代对象,直接写range(3)就能循环3次,生成3个元素组成(1,3)的数组。
  • 可以简化fdata的生成代码,直接用np.array(ypar).reshape(1, -1)替代多步赋值,让代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:19:49