zoukankan      html  css  js  c++  java
  • Numpy解决问题实例--随机漫步

    一.随机漫步

    随机漫步,从0开始,步长1和-1出现的概率相等.我们通过内置的Python的方式来实现1000步的随机漫步:

    import numpy as np
    import matplotlib.pyplot as plt
    import pylab
    import random
    
    position =0
    walk=[position]
    steps=1000
    x=np.arange(steps)
    for i in x:
        strp=1 if random.randint(0,1) else -1
        position+=strp
        walk.append(position)
    
    x=np.arange(steps+1)
    y=walk
    plt.plot(x,y,color="red",linewidth=1)
    plt.xlabel("steps")
    plt.ylabel("position")
    plt.title("random walk")
    plt.xlim(0,100)
    pylab.show()

    若是用np.random模块

    nsteps=1000
    draws=np.random.randint(0,2,size=nsteps)
    steps=np.where(draws>0,1,-1)
    walk=steps.cumsum()

    我们想要知道第一个10或-10的索引,可以用argmax来解决这个问题,它返回的是布尔型数组第一个最大值的索引.

    (np.abs(walk)>=10).argmax()

    二.多个随机漫步

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

    下面来计算30或-30的最小穿越时间

    #那些行达到了30
    hits30=(np.abs(walks)>=30).any(1)
    #获取穿越时间
    crossing_times=(np.abs(walks[hits30])>=30).argmax(1)

    虽然是个小小的例子,但是可以看出好好的利用numpy的函数,可以大量的简化代码,以及实现更加高级的操作.numpy真是棒极了,python真是奇妙啊.

  • 相关阅读:
    Ubuntu 16.04 快速搭建ftp服务(转载)
    emmc协议简介(转载)
    产品经理简介
    小程序常用代码
    微信登录
    sql临时表与变量表
    备份数据库与还原数据库
    JQuery多个异步操作后执行(resolve,promise,when,done)
    苹果IOS下text-shadow与box-shadow失效的解决办法
    jS弹出新窗口被拦截的解决方法
  • 原文地址:https://www.cnblogs.com/sggggr/p/12197689.html
Copyright © 2011-2022 走看看