随机漫步问题 问什么argmax输出结果会有很多0?不符预期。

这是一个基础的随机漫步问题。

我按照书上的内容,尝试找出 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呢?求大神指点迷津。

hit7的内容

一共8行为true,此图为输出前4行

一共8行为true,此图为输出后4行

令人懊恼的输出结果,不是0的都没问题,可为什么会有0

阅读 3.5k
1 个回答

当某一行所有值都不大于7时,walks[hits7] >= 7在那一行返回全部是False.
np.argmax函数来说,当所有值都一样大,也就都是最大值,默认返回第一个,也说是0出现的原因。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题