鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Python  Linux/ 隨機漫步問題 問什么argmax輸出結(jié)果會有很多0?不符預(yù)期。

隨機漫步問題 問什么argmax輸出結(jié)果會有很多0?不符預(yù)期。

這是一個基礎(chǔ)的隨機漫步問題。

我按照書上的內(nèi)容,嘗試找出 axis=1 上絕對值大于等于7的索引,但總是有幾行的索引為0,而正常輸入的索引是沒問題的,我不明白出現(xiàn)0的原因在哪。仔細檢查了程序的很多地方,都沒有用。

源代碼:

import numpy as np
from numpy import random

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

hits7 = (np.abs(walks)>7).any(1)
print(hits7)

crossing_times = (np.abs(walks[hits7] >= 7).argmax(1))
print((walks[hits7]))
print(crossing_times)

一共10次輸出,8次為true,也就是在8行里找出絕對值大于7的索引,案例說不應(yīng)該有0存在,結(jié)果中不是0的行都沒問題,可為什么會有0呢?求大神指點迷津。

hit7的內(nèi)容

一共8行為true,此圖為輸出前4行

一共8行為true,此圖為輸出后4行

令人懊惱的輸出結(jié)果,不是0的都沒問題,可為什么會有0

回答
編輯回答
茍活

當某一行所有值都不大于7時,walks[hits7] >= 7在那一行返回全部是False.
np.argmax函數(shù)來說,當所有值都一樣大,也就都是最大值,默認返回第一個,也說是0出現(xiàn)的原因。

2017年6月13日 21:14