2017-10-06 9 views
0

私は全てのForループ値()を行列で保存したいと考えています。行列を使ってループ外にループ値を取得する方法は?

しかし、私はどのようにそれを行うのか分かりません。私が何をAMAXわからないようなコードを実行せずに投稿:

は、あなたが今ヤード、WD、および広告アレイ 免責事項のすべての値にアクセスすることができます〜

import numpy as np 

T1 = 3 
T3 = 10 

ydd = 0; 
wdd = 0; 
tt = 0; 

t=0 
for t in np.arange (t,T3,0.001) : 
    if t <= T1: 
     yd = 1/2*amax*(t**2) 
     wd = amax*t  
     ad = amax 
    elif t > T1: 
     yd = amax*(t**6) 
     wd = amax*t  
     ad = amax 

答えて

0
import numpy as np 

T1 = 3 
T3 = 10 

ydd = 0; 
wdd = 0; 
tt = 0; 

## declare arrays to store the data 
## size of arrays is bit tricky. 
## I am just calculating the number of times you are going to run the for loop. 
## The array has to be same size 
t=0 
i=0 

yd = np.zeros(int((T3-t)*1.0/0.001)) 
wd = np.zeros(int((T3-t)*1.0/0.001)) 
ad = np.zeros(int((T3-t)*1.0/0.001))  
for t in np.arange (t,T3,0.001) : 
    if t <= T1: 
     yd[i] = 1/2*amax*(t**2) 
     wd[i] = amax*t  
     ad[i] = amax 
    elif t > T1: 
     yd[i] = amax*(t**6) 
     wd[i] = amax*t  
     ad[i] = amax 
    i = i+1 
    ## store in the array instead of variable 

あなたのコメントをありがとうです。

+0

ありがとうございました! –

+0

それがうまくいけば、答えを受け入れることができます! –

0

forループなしで実行します。それははるかに高速です(特にとnumpy!)、相互依存性を持たない計算ではより自然で読みやすいです。

vals = np.arange(t, T3, 0.001) 
cond = vals <= T1 

yd = np.zeros_like(vals) 
yd[cond] = (0.5 * amax * vals**2)[cond] 
yd[!cond] = (amax * vals**6)[!cond] 

wd = amax * vals 
ad = np.full_like(vals, amax) 
+0

wow〜 私はこれも素晴らしい解決策だと思います!ありがとうございました! –

関連する問題