首页 > 解决方案 > 如何堆叠for循环的每次迭代的输出?

问题描述

我有两个 for 循环,它们生成一个形状为 (1, 3) 的数组。

我想将每次迭代的结果垂直堆叠在一个数组中。更清楚地说,最终输出应该是一个 (3, 3) 数组,其中第一行是第一次迭代的输出,依此类推。我的代码如下所示:

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 =  numpy.loadtxt(Y_parameter_Data, skiprows=1, delimiter=',')

                    ypar = []

                    for k in range(0, len(3)):
                            a = numpy.reshape(data[k,1::2], (1,1))
                            b = numpy.reshape(data[k,2::2], (1,1))
                            ypar.append(a+j*b)

                    c = ypar

                    fdata= numpy.asarray(c) 
                    fdata= numpy.reshape(fdata, (1,-1))


                    fdata= fdata

这里的问题是如何为每次迭代保存 fdata。然后我可以使用 numpy.vstack 来堆叠结果。谢谢你的帮助。

标签: pythonarraysfor-loopiterationvstack

解决方案


尝试定义一个由列表组成的列表。

for i in range (2):
    InnerList=[]
    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 =  numpy.loadtxt(Y_parameter_Data, skiprows=1, delimiter=',')
                ypar = []
                for k in range(0, len(3)):
                        a = numpy.reshape(data[k,1::2], (1,1))
                        b = numpy.reshape(data[k,2::2], (1,1))
                        ypar.append(a+j*b)
                c = ypar

                fdata= numpy.asarray(c) 
                fdata= numpy.reshape(fdata, (1,-1))


                fdata= fdata
                InnerList.append(fdata)
    OuterList.append(InnerList)

推荐阅读