Numpy學習筆記三

範例隨機漫步

import random
position=0
walk=[position]
steps=1000
for i in range(steps):
    step=1 if random.randint(0,1) else -1  #random.randint(0,1)隨機產生0,1數字
    position+=step
    walk.append(position)
walk

np.random.seed(12345)
nsteps=1000
draws=np.random.randint(0,2,size=nsteps)
steps=np.where(draws>0,1,-1)
walk=steps.cumsum()
walk

walk.min(),walk.max(),(np.abs(walk)>=10).argmax() #(np.abs(walk) >= 10).argmax()找出第一個10或-10的索引值

nwalks=5000
nsteps=1000
draws=np.random.randint(0,2,size=(nwalks,nsteps))
steps=np.where(draws>0,1,-1)
walks=steps.cumsum(1)
walks

walks.shape

#(np.abs(walks)>=30).any(1)每一行的1000列中若有一個值的絕對值小於30,則爲true
hits30=(np.abs(walks)>=30).any(1)
hits30

hits30.shape

hits30.sum() #統計爲true的數量

#計算在軸1上的平均穿越時間  
crossing_times=(np.abs(walks[hits30])>=30).argmax(1)
crossing_times,crossing_times.mean()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章