我想用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个元素)保存在一个列表中,以便稍后在代码中使用它。能否请任何人知道我怎么可能做到这一点?谢谢!
答案 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)