教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

科學計算庫NumPy案例:酒鬼漫步

更新時間:2022年10月10日14時10分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

  通過前面對NumPy的學習,相信大家一定對NumPy這個科學計算包有了一定的了解,接下來,本節(jié)將通過酒鬼漫步的案例來介紹如何運用NumPy隨機數(shù)模塊與數(shù)據(jù)處理。

  下面先為大家描述一下場景,在一片空曠的平地上(一個二維地面上)有一個酒鬼,他最初停留在原點的位置,這個酒鬼每走一步時,方向是不確定的,在經(jīng)過時間t之后,我們希望計算出這個酒鬼與原點的距離。

  例如,這個酒鬼走了2000步(每步為0.5米),向前走一步記為1,向后走一步記為-1,當計算距原點的距離時,就是將所有的步數(shù)進行累計求和。因此,使用random模塊來隨機生成2000個“擲硬幣值”(兩個結果任選一個),具體代碼如下:

導入numpy包
import numpy as np
steps=2000
draws=np.random.randint(0, 2, size=steps)
# 當元素為1時,direction_steps為1,
# 當元素為0時,direction_steps為-1
direction_steps=np.where(draws>0, 1, -1)
# 使用cumsum()計算步數(shù)累計和
distance=direction_steps.cumsum()

  有了步數(shù)的累計和之后,可以嘗試計算酒鬼距離原點最遠的距離,即分別調用max()與min()計算向前走與向后走的最大值,具體代碼如下。

In [141]: # 使用max()計算向前走的最遠距離
          distance.max()
Out[141]: 12
In [142]: # 使用min()計算向后走的最遠距離
          distance.min()
Out[142]: -31

  從兩次輸出的結果中可以看出,這個酒鬼走的最遠的距離是朝后方距離原點15.5(31×0.5)米的位置。值得一提的是,由于這里使用的是隨機數(shù),所以每次運行的結果是隨機的。

  當酒鬼距原點的距離大于或等于15米時,如果希望計算他總共走了多少步,則可以使用數(shù)學方程“|x×0.5|≥15”完成,其中x表示步數(shù)。要想計算一個數(shù)的絕對值,則需要調用abs()函數(shù)實現(xiàn),不過該函數(shù)返回的是一個布爾數(shù)組,即不滿足條件的值均為False,滿足條件的值均為True。為了從滿足條件的結果中返回最大值的索引,則還需要通過調用argmax()方法來實現(xiàn),具體代碼如下。

In [143]: # 15米換算成步數(shù)
          steps=15/0.5
          (np.abs(distance)>=steps).argmax()
Out[143]: 877

  從計算結果可以看出,當酒鬼走到877步時,此時距離原點的長度是大于或等于15米的。

0 分享到:
和我們在線交談!