这是一个基础的随机漫步问题。
我按照书上的内容,尝试找出 axis=1 上绝对值大于等于7的索引,但总是有几行的索引为0,而正常输入的索引是没问题的,我不明白出现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的索引,案例说不应该有0存在,结果中不是0的行都没问题,可为什么会有0呢?求大神指点迷津。
当某一行所有值都不大于7时,
walks[hits7] >= 7
在那一行返回全部是False
.对
np.argmax
函数来说,当所有值都一样大,也就都是最大值,默认返回第一个,也说是0
出现的原因。