@numpy小节
import numpy as np
draws = np.random.randint(0,2,size=(3,10))
draws
array([[0, 0, 0, 0, 0, 0, 0, 1, 1, 0],
[0, 1, 1, 0, 0, 1, 0, 0, 0, 1],
[0, 0, 1, 1, 1, 0, 1, 1, 0, 1]])
steps = np.where(draws > 0, 1, -1)
steps
array([[-1, -1, -1, -1, -1, -1, -1, 1, 1, -1],
[-1, 1, 1, -1, -1, 1, -1, -1, -1, 1],
[-1, -1, 1, 1, 1, -1, 1, 1, -1, 1]])
steps.cumsum()#前i-1项和
array([ -1, -2, -3, -4, -5, -6, -7, -6, -5, -6, -7, -6, -5,
-6, -7, -6, -7, -8, -9, -8, -9, -10, -9, -8, -7, -8,
-7, -6, -7, -6], dtype=int32)
walk = steps.cumsum(1)#对行处理
walk
array([[-1, -2, -3, -4, -5, -6, -7, -6, -5, -6],
[-1, 0, 1, 0, -1, 0, -1, -2, -3, -2],
[-1, -2, -1, 0, 1, 0, 1, 2, 1, 2]], dtype=int32)
hist30 = (np.abs(walk) >= 3).any(1)
hist30
any(1)函数表示每行满足条件的返回布尔值
array([ True, True, False])
hist30.sum()
2
hist30.sum()
2