来源:AI开发者
如果你对我的代码有兴趣,可以在我的 GitHub 查看。当你第一次执行时,代码会报错(我一直没有解决),但是同样的代码框再执行一次,就能够正常跑通了。Matplotlib 是一个专业的数据可视化的 Python 包。除了折线图、直方图和热力图,Matplotlib HIA可以实现一些简单的动画。
游戏人生
-
我们首先建立一个 N x N 大小的面板 (在我们目前讨论的面板中是 50 x 50)。
-
我们随机选择一部分格子进行填充 (首次模拟,我随机在2500个格子里面填充了1500个),这里的一个格子代表一个单元格
-
每一个填充的格子的周围至多有一个格子为死亡
-
每一个填充的格子的周围有至少四个格子不会死亡
-
每一个填充的格子的周围有两到三个格子存活
-
每一个被三个填充格子相邻的空格子将会成为一个新的单元格
开始
import time
from IPython import display
import matplotlib.pyplot as plt
import matplotlib.animation as animation
-
我们想要一个 50x50 大小的面板。
-
填充变量使计算相邻单元格变得更容易,通过用总是空的额外单元格填充边缘,我们使它不需要编写额外的逻辑来处理板的边缘。 因此,我们的50x50板被一个空单元格边界包围,使得实际的numpy数组的大小为52 x52。
-
变量 initial_cells 代表我们想要初始化的单元格数量,他们会随机在面板上产生。
# Input variables for the board
boardsize = 50 # board will be X by X where X = boardsize
pad = 2 # padded border, do not change this!
initial_cells = 1500 # this number of initial cells will be placed
# in randomly generated positions
接下来我们在初始化的单元格上随机生成1500个坐标,这些坐标保存在变量pos_list。
# Get a list of random coordinates so that we can initialize
# board with randomly placed organisms
pos_list = []
for i in range(initial_cells):
pos_list.append([random.randint(1, boardsize),
random.randint(1, boardsize)])
# Initialize the board
my_board = np.zeros((boardsize+pad, boardsize+pad))
my_board = init_board(pos_list, my_board)
设置面板的动画
# Required line for plotting the animation
%matplotlib notebook
# Initialize the plot of the board that will be used for animation
fig = plt.gcf()
# Show first image - which is the initial board
im = plt.imshow(my_board)
plt.show()
棋盘的初始状态(黄色=单元格 )
# Helper function that updates the board and returns a new image of
# the updated board animate is the function that FuncAnimation calls
def animate(frame):
im.set_data(update_board(my_board))
return im,
-
fig 是我们先前建立的用来显示动画的容器变量。
-
animate 函数是刚刚写的由 FuncAnimation() 通过帧数来调用的函数(帧数参数会自动传入,不需要声明)。
-
frames 是动画最大帧数的限制,这里我们设置成 200 帧,也就是说 200 帧后动画会自动结束。
-
interval 是每两帧的间隔时间,单位为毫秒。 这里我们用 50 毫秒。
# This line creates the animation
anim = animation.FuncAnimation(fig, animate, frames=200, interval=50)
结论
-
一次次地进行蒙特卡罗模拟,以便观察结果分布是如何逐渐形成的。
-
遍历时间序列数据,以便描述模型或数据在新观测数据到达时的反应。
-
突出显示你的算法识别的集群如何随着输入(如集群数量)的改变而改变。
关联随时间或跨数据的不同子样本的热图,以可视化不同的样本可能如何影响模型的估计参数。
via:https://github.com/yiuhyuk/game_of_life
(完)

?关注“Python与人工智能社区”
王老湿目前建立了Python、爬虫、数据分析、机器学习、AI实战、自然语言处理、计算机视觉、推荐系统等方向的读者交流群,大家可以添加王老湿的微信进行加群
近期专栏推荐 (点击下方标题即可跳转)
1.
2.
3.
4.
点下「在看」,给文章盖个戳吧!?

391



被折叠的 条评论
为什么被折叠?



