繁体   English   中英

在 Python 中定义一个特定的循环

[英]Defining a specific loop in Python

我正在尝试定义一个循环,其中t=1sigma(1)=v(0)*1+1 换句话说,我希望当前时间步的sigma取上一个时间步的v v通过v=sigma*Rsigma相关。

附加了当前和所需的输出。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM