保存for循环的输出,以备将来在代码中使用

时间:2019-02-01 17:26:46

标签: python-3.x

我想用for循环将例程重复n次并将输出保存在列表中。我的代码如下:

n = 4
N =  3
DX_1 = n*[np.zeros((N,2))]
empirical_b1 = [np.zeros(n)]
y = [np.zeros(n)]

def data(n=1):
    for i in range(n):
        Gamma = np.random.uniform(-0.5*np.pi, 0.5*np.pi, (2,N))
        W = np.random.exponential(1, (2,N))
        DX_1[i] = pow(dt, 1/a1)*(np.sin(a1*Gamma))/ pow(np.cos(Gamma),1/a1)* \
             pow((np.cos((1-a1)*Gamma))/W, (1-a1)/a1)
    return DX_1
DX_1 =  data(n = 4)

U1 = np.array([[np.sqrt(N)], [np.sqrt(N)]])

def vector(U1):
    return np.matmul(U1.reshape(1,2), DX_1)
v = vector(U1)
# with the following loop I expect to get a list with n elements.
for x in v:
    empirical_b1 = np.sum(np.exp(np.complex(0,1)*x))/N
    print(empirical_b1)

在最后一个循环中,我得到了想要的结果。但是,如果我打印外循环empirical_b1我得到的只有一个元素不是n,因为我的愿望,我想稍后在代码中使用此输出。我想将此输出(n个元素)保存在一个列表中,以便稍后在代码中使用它。能否请任何人知道我怎么可能做到这一点?谢谢!

1 个答案:

答案 0 :(得分:0)

创建一个列表并附加结果:

empirical_b1_list = []
for x in v:
    empirical_b1_list.append(np.sum(np.exp(np.complex(0,1)*x))/N)
print(empirical_b1_list)

或使用列表理解

empirical_b1_list = [np.sum(np.exp(np.complex(0,1)*x))/N for x in v]
print(empirical_b1_list)