[英]Defining a specific loop in Python
我正在尝试定义一个循环,其中t=1
, sigma(1)=v(0)*1+1
。 换句话说,我希望当前时间步的sigma
取上一个时间步的v
。 v
通过v=sigma*R
与sigma
相关。
附加了当前和所需的输出。
import numpy as np
N=2
ar1 = []
ar2 = []
v=np.zeros((3,3))
R=np.array([[1.1,1.2,1.3],[1.4,1.5,1.6],[1.7,1.8,1.9]])
for t in range(0,N):
sigma = v*t+1
ar1.append(sigma)
I1=np.array(ar1)
v=sigma*R
ar2.append(v)
I2=np.array(ar2)
print("I1 =",[I1])
print("I2 =",[I2])
当前输出为
I1 = [array([[[1. , 1. , 1. ],
[1. , 1. , 1. ],
[1. , 1. , 1. ]],
[[2.1, 2.2, 2.3],
[2.4, 2.5, 2.6],
[2.7, 2.8, 2.9]]])]
I2 = [array([[[1.1 , 1.2 , 1.3 ],
[1.4 , 1.5 , 1.6 ],
[1.7 , 1.8 , 1.9 ]],
[[2.31, 2.64, 2.99],
[3.36, 3.75, 4.16],
[4.59, 5.04, 5.51]]])]
所需的输出是
I1 = [array([[[1. , 1. , 1. ],
[1. , 1. , 1. ],
[1. , 1. , 1. ]],
[[1.1, 1.2, 1.3],
[1.4, 1.5, 1.6],
[1.7, 1.8, 1.9]]])]
I2 = [array([[[1.1 , 1.2 , 1.3 ],
[1.4 , 1.5 , 1.6 ],
[1.7 , 1.8 , 1.9 ]],
[[1.21, 1.44, 1.69],
[1.96, 2.25, 2.56],
[2.89, 3.24, 3.61]]])]
只有当我使用时,我才会得到预期的结果
if t == 0:
sigma = v*t + 1
else:
sigma = v*t
但我不知道这是否是你所期望的——你展示了你想要的t = 1
但你从t = 0
开始计算。 也许你所有的计算都是错误的。
import numpy as np
N = 2
ar1 = []
ar2 = []
v = np.zeros((3,3))
R = np.array([[1.1,1.2,1.3],[1.4,1.5,1.6],[1.7,1.8,1.9]])
for t in range(0, N):
print('\n--- t:', t, '---\n')
if t == 0:
sigma = v*t + 1
else:
sigma = v*t
print('sigma:')
print(sigma)
ar1.append(sigma.copy())
v = sigma*R
print('v:')
print(v)
ar2.append(v.copy())
# --- after loop ---
print('\n--- results ---\n')
I1 = [np.array(ar1)]
I2 = [np.array(ar2)]
print("I1 =", I1)
print("I2 =", I2)
结果:
--- t: 0 ---
sigma:
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
v:
[[1.1 1.2 1.3]
[1.4 1.5 1.6]
[1.7 1.8 1.9]]
--- t: 1 ---
sigma:
[[1.1 1.2 1.3]
[1.4 1.5 1.6]
[1.7 1.8 1.9]]
v:
[[1.21 1.44 1.69]
[1.96 2.25 2.56]
[2.89 3.24 3.61]]
--- results ---
I1 = [array([[[1. , 1. , 1. ],
[1. , 1. , 1. ],
[1. , 1. , 1. ]],
[[1.1, 1.2, 1.3],
[1.4, 1.5, 1.6],
[1.7, 1.8, 1.9]]])]
I2 = [array([[[1.1 , 1.2 , 1.3 ],
[1.4 , 1.5 , 1.6 ],
[1.7 , 1.8 , 1.9 ]],
[[1.21, 1.44, 1.69],
[1.96, 2.25, 2.56],
[2.89, 3.24, 3.61]]])]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.