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真是奇妙啊.

  • 相关阅读:
    numpy函数:[6]arange()详解
    python中的list和array的不同之处
    python 矩阵转置transpose
    PowerDesigner(一)-PowerDesigner概述(系统分析与建模)
    MDX中Filter 与Exist的区别
    SQL Server 2016 —— 聚集列存储索引的功能增强
    SQL Server 2016:内存列存储索引
    PXE
    setjmp
    skb head/data/tail/end/介绍
  • 原文地址:https://www.cnblogs.com/sggggr/p/12197689.html
Copyright © 2011-2022 走看看