什么是随机游走?

随机游走(random walk)也称随机漫步,随机行走等,是以随机的体例采纳连续步调的过程。然后,可以将其他条件应用于此描述,以为您的特定用例建立一个随机遍历。粒子的布朗运动,股票代码运动,基质中的活细胞运动只是在现实世界中看到的一些更为人所知的随机游走。

在这里,我们模拟从原点开始的1-D,2-D和3-D的简化随机游走以及从[-1,0,1]中选择的具有相等几率的离散步长。起点暗示+,停止点暗示o。

对不合的应用程序,这些条件会根据需要产生转变,例如从选定的股票价格开始游走,用显微镜检测到的初始细胞位置等,steps的选择通常是几率性的,并且取决于来自past data, projection assumptions, hypothesis being tested等的附加信息。

设置您的jupyter notebook:

%pylab inline from itertools import cycle from mpl_toolkits.mplot3d import Axes3D colors = cycle(‘bgrcmykbgrcmykbgrcmykbgrcmyk’)

1-D随机游走:

我们从原点解缆(y=0),并选择一个step,以相等的几率移动每一个连续的step。起点用红色暗示,终点用黑色暗示。在下面的图中绘制了一个累加和,其中显示了在1D中10k步之间的轨迹。

用Python模拟随机游走(Random walks)-1.jpg (28.74 KB, 下载次数: 0)

2018-10-15 06:12 上传

Python实现如下:

# Define parameters for the walk dims = 1 step_n = 10000 step_set = [-1, 0, 1] origin = np.zeros((1,dims)) # Simulate steps in 1D step_shape = (step_n,dims) steps = np.random.choice(a=step_set, size=step_shape) path = np.concatenate([origin, steps]).cumsum(0) start = path[:1] stop = path[-1:] # Plot the path fig = plt.figure(figsize=(8,4),dpi=200) ax = fig.add_subplot(111) ax.scatter(np.arange(step_n+1), path, c=’blue’,alpha=0.25,s=0.05); ax.plot(path,c=’blue’,alpha=0.5,lw=0.5,ls=’ — ‘,); ax.plot(0, start, c=’red’, marker=’+’) ax.plot(step_n, stop, c=’black’, marker=’o’) plt.title(‘1D Random Walk’) plt.tight_layout(pad=0) plt.savefig(‘plots/random_walk_1d.png’,dpi=250);

用Python模拟随机游走(Random walks)-2.jpg (57.01 KB, 下载次数: 0)

2018-10-15 06:12 上传

2-D随机游走:

我们从原点(x = 0,y = 0)开始,并在每个标的目的上采纳随机步调,给出9个可能的每个步调移动标的目的(Δx,Δy){-1,0,1} :

(-1,-1), (-1,0), (-1,1),

(0,-1), (0,0), (0,1),

(1,-1), (1,0), (1,1)

跨越10k步的模拟为我们提供了以下轨迹。在流体概况运动的粒子具有二维随机游走,并显示如下轨迹。

用Python模拟随机游走(Random walks)-3.jpg (58.98 KB, 下载次数: 0)

2018-10-15 06:12 上传

Python代码如下:

# Define parameters for the walk dims = 2 step_n = 10000 step_set = [-1, 0, 1] origin = np.zeros((1,dims)) # Simulate steps in 2D step_shape = (step_n,dims) steps = np.random.choice(a=step_set, size=step_shape) path = np.concatenate([origin, steps]).cumsum(0) start = path[:1] stop = path[-1:] # Plot the path fig = plt.figure(figsize=(8,8),dpi=200) ax = fig.add_subplot(111) ax.scatter(path[:,0], path[:,1],c=’blue’,alpha=0.25,s=0.05); ax.plot(path[:,0], path[:,1],c=’blue’,alpha=0.5,lw=0.25,ls=’ — ‘); ax.plot(start[:,0], start[:,1],c=’red’, marker=’+’) ax.plot(stop[:,0], stop[:,1],c=’black’, marker=’o’) plt.title(‘2D Random Walk’) plt.tight_layout(pad=0) plt.savefig(‘plots/random_walk_2d.png’,dpi=250);

用Python模拟随机游走(Random walks)-4.jpg (59.42 KB, 下载次数: 0)

2018-10-15 06:12 上传

多个2D随机游走的示例:

用Python模拟随机游走(Random walks)-5.jpg (80.72 KB, 下载次数: 0)

2018-10-15 06:12 上传

3-D随机游走:

我们从原点(x = 0,y = 0,z = 0)开始,并从一组27个标的目的(Δx,Δy,Δz){-1,0,1}中 选择一个随机体例的steps:

用Python模拟随机游走(Random walks)-6.jpg (46.96 KB, 下载次数: 0)

2018-10-15 06:12 上传

Python代码如下:

# Define parameters for the walk dims = 3 step_n = 1000 step_set = [-1, 0, 1] origin = np.zeros((1,dims)) # Simulate steps in 3D step_shape = (step_n,dims) steps = np.random.choice(a=step_set, size=step_shape) path = np.concatenate([origin, steps]).cumsum(0) start = path[:1] stop = path[-1:] # Plot the path fig = plt.figure(figsize=(10,10),dpi=200) ax = fig.add_subplot(111, projection=’3d’) ax.grid(False) ax.xaxis.pane.fill = ax.yaxis.pane.fill = ax.zaxis.pane.fill = False ax.set_xlabel(‘X’) ax.set_ylabel(‘Y’) ax.set_zlabel(‘Z’) ax.scatter3D(path[:,0], path[:,1], path[:,2],   c=’blue’, alpha=0.25,s=1) ax.plot3D(path[:,0], path[:,1], path[:,2],   c=’blue’, alpha=0.5, lw=0.5) ax.plot3D(start[:,0], start[:,1], start[:,2],   c=’red’, marker=’+’) ax.plot3D(stop[:,0], stop[:,1], stop[:,2],   c=’black’, marker=’o’) plt.title(‘3D Random Walk’) plt.savefig(‘plots/random_walk_3d.png’,dpi=250);

用Python模拟随机游走(Random walks)-7.jpg (75.05 KB, 下载次数: 0)

2018-10-15 06:12 上传

在3D中模拟k个随机游走

现在我们在3D中模拟多个随机游走。每个随机游走暗示点源的运动同时开始,起点设置在从(x,y,z)[-10,10]中选择的点。

一些细胞/粒子在没有任何延续标的目的力的情况下运动,会呈现这样的轨迹。三维随机游走的一个有趣的方面是,即使起点很近,随着时间的推移,对象会散开。

我们可以通过不合的丈量体例来进行描述阐发(距离,位移,速度,速度,角度散布,指示器计数,约束比等等)。我们还可以模拟directed/biased 随机游走,其中下一步取决于当前位置,或者由于某种形式的现有梯度或标的目的力。

用Python模拟随机游走(Random walks)-8.jpg (49.47 KB, 下载次数: 0)

2018-10-15 06:12 上传

# Define parameters for the walk dims = 3 n_runs = 10 step_n = 1000 step_set = [-1, 0 ,1] runs = np.arange(n_runs) step_shape = (step_n,dims) # Plot fig = plt.figure(figsize=(10,10),dpi=250) ax = fig.add_subplot(111, projection=’3d’) ax.grid(False) ax.xaxis.pane.fill = ax.yaxis.pane.fill = ax.zaxis.pane.fill = False ax.set_xlabel(‘X’) ax.set_ylabel(‘Y’) ax.set_zlabel(‘Z’)   for i, col in zip(runs, colors):  # Simulate steps in 3D  origin = np.random.randint(low=-10,high=10,size=(1,dims))  steps = np.random.choice(a=step_set, size=step_shape)  path = np.concatenate([origin, steps]).cumsum(0)  start = path[:1]  stop = path[-1:]  # Plot the path  ax.scatter3D(path[:,0], path[:,1], path[:,2],  c=col,alpha=0.15,s=1);  ax.plot3D(path[:,0], path[:,1], path[:,2],   c=col, alpha=0.25,lw=0.25)  ax.plot3D(start[:,0], start[:,1], start[:,2],  c=col, marker=’+’)  ax.plot3D(stop[:,0], stop[:,1], stop[:,2],  c=col, marker=’o’); plt.title(‘3D Random Walk - Multiple runs’) plt.savefig(‘plots/random_walk_3d_multiple_runs.png’,dpi=250);

用Python模拟随机游走(Random walks)-9.jpg (84.88 KB, 下载次数: 0)

2018-10-15 06:12 上传

更多内容回复查看:

游客,如果您要查看本帖隐藏内容请回复

python三维随机游走轨迹模拟_用Python模拟随机游走(Random walks)相关推荐

  1. 在python中print表示的数据类型是_【Python连载】那些必须掌握的Python数据类型

    原标题:[Python连载]那些必须掌握的Python数据类型 经过近几年的发展,Python已成为了数据科学和机器学习的首选语言,许多人也因此开始走上自学python之路.从今天开始,本公众号将陆续 ...

  2. python七段数码管绘制单个数字_使用Python的turtle库实现七段数码管绘制

    七段数码管绘制: 七段数码管是由7段数码管拼接而成,每段有亮或不亮两种情况,改进的七段数码管还包括一个小数点位置. 七段数码管能形成2^7=128种状态,其中部分状态能够显示易于人们理解的数字或字母含 ...

  3. python适合零基础的人吗_学Python需要什么基础知识?零基础可以学Python吗?

    学Python需要什么基础知识?一般来说,想要学Python最好具备一定的计算机专业知识,尤其是数学和英语不错的话,对学Python也有一定的帮助.但是零基础的学习者就不能学Python了吗?当然不是 ...

  4. python基础面试都问什么问题_基本 Python 面试问题

    def Stack(object): def __init__(self): self.stack = [] def push(self,value): # 进栈 self.stack.append( ...

  5. python程序设计课后答案第三单元_最新Python程序设计课后习题答案-第一单元

    精品文档 精品文档习题1 一.选择题 1.Python语言属于().C A.机器语言 B.汇编语言 C.高级语言 D.科学计算语言2.下列选项中,不属于Python特点的是().B A.面向对象 B. ...

  6. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  7. 如何使用python编程抢京东优惠券 知乎_学好Python爬取京东知乎价值数据

    原标题:学好Python爬取京东知乎价值数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这 ...

  8. python简单代码运用到桌面壁纸_五行Python代码自动换你的电脑桌面壁纸(内附源码和exe)...

    很多行友问行哥,Python能不能自动更换电脑壁纸呀,今天它来了 只需要一行代码,指定图片地址即可更换电脑桌面.加上壁纸文件夹路径,让你随机更换电脑桌面,带来不期而遇的新鲜.使用爬虫技术,自动下载壁纸 ...

  9. python查询和替换一个文本字符串_【Python】python面试题

    一些Python面试题 1. (1)python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只 ...

最新文章

  1. 面向Mobile device的CNN模型手工设计与NAS分析总结,MobileNet V1,V2,V3,Efficient,MNasNet以及Efficient network design
  2. 帧编码 场编码_去年,我帮助举办了40场编码活动。 这是我学到的。
  3. android如何监听按钮,Android – 两个onClick监听器和一个按钮
  4. php文件上传指定路径,php上传文件到指定文件夹
  5. Java json序列化库gson(2)
  6. 【HBase从入门到精通系列】如何避免HBase写入过快引起的各种问题
  7. 日期和毫秒值 例子
  8. 每日一拍:linux升级python2.x到python3.x
  9. java oop6_JavaOOP_03 构造方法
  10. SpringBoot集成Redis来实现缓存技术方案
  11. switch的对象不能为null
  12. Jensen 不等式
  13. 家庭一台电脑多人上网方法
  14. Java入门-换行输出
  15. python中grid的用法_Python Grid使用和布局
  16. 航芯技术分享 | 一文读懂汽车CAN总线技术原理(下)
  17. Flutter系列之在 macOS 上安装和配置 Flutter 开发环境
  18. 重建windows系统的引导盘(亲测可用)
  19. 为什么那么多人喜欢用CTA策略?
  20. 远程服务器 一闪就没有了,远程桌面连接一闪而过的解决方法

热门文章

  1. 投资大咖说,消费产业3个升级方向
  2. Flink之Kmeans
  3. Python 随机生成 范围内 经纬度 坐标信息
  4. 中兴通讯重磅推出首款智能AI机顶盒
  5. java 单例模式双重检索_Java单例模式的双重检测
  6. 在签出前,请清理存储库工作树
  7. 一篇弄懂 offsetWidth、offsetHeight、offsetleft、offsetTop和offsetParent的区别!(1)
  8. LSM 算法的原理(通俗,详细)
  9. 常见设计软件汇总(网上资料引用)
  10. 如何在Ubuntu上安装微信(有效)