Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想将数组转换成一个图像,然后设置动画_Python_Python 3.x_Numpy_Conways Game Of Life - Fatal编程技术网

Python 我想将数组转换成一个图像,然后设置动画

Python 我想将数组转换成一个图像,然后设置动画,python,python-3.x,numpy,conways-game-of-life,Python,Python 3.x,Numpy,Conways Game Of Life,所以我试着想出一个康威的人生游戏密码,这让我想到了这个。它可能不是最有效的一个,但我是一个乞丐编码器,我想让事情简单。我想做的就是给游戏制作动画,而不仅仅是显示游戏的最后一代。另外,我想知道如何不确定地运行游戏,因为正如您所看到的,这段代码有一个预先确定的生成数。提前感谢您的帮助,以下是我的代码: import numpy as np import matplotlib.pyplot as plt x=np.random.randint(2, size=(50,50)) for b in r

所以我试着想出一个康威的人生游戏密码,这让我想到了这个。它可能不是最有效的一个,但我是一个乞丐编码器,我想让事情简单。我想做的就是给游戏制作动画,而不仅仅是显示游戏的最后一代。另外,我想知道如何不确定地运行游戏,因为正如您所看到的,这段代码有一个预先确定的生成数。提前感谢您的帮助,以下是我的代码:

import numpy as np
import matplotlib.pyplot as plt

x=np.random.randint(2, size=(50,50))

for b in range (0,100):
    y=np.zeros((50,50), dtype=np.int)
    for c in range(1,48):
        for d in range(1,48):
            if x[c][d]==1:
                if x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]<2 or x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]>3:
                    y[c][d]=0
                else:
                    y[c][d]=1
            if x[c][d]==0:
                if x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]==3:
                    y[c][d]=1
                else:
                    y[c][d]=0
    x=y.copy()

plt.imshow(x)
plt.grid(False)
plt.show()
将numpy导入为np
将matplotlib.pyplot作为plt导入
x=np.random.randint(2,size=(50,50))
对于范围(0100)内的b:
y=np.zero((50,50),dtype=np.int)
对于范围(1,48)内的c:
对于范围(1,48)内的d:
如果x[c][d]==1:
如果x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]3:
y[c][d]=0
其他:
y[c][d]=1
如果x[c][d]==0:
如果x[c][d-1]+x[c][d+1]+x[c-1][d-1]+x[c-1][d+1]+x[c+1][d-1]+x[c+1][d]+x[c+1][d+1]==3:
y[c][d]=1
其他:
y[c][d]=0
x=y.copy()
plt.imshow(x)
plt.grid(假)
plt.show()

在Macbook上运行时,我很幸运地看到了各种动画示例(以及相关的阻塞/非阻塞示例)

一件对我有用的简单事情:

...
x=np.random.randint(2,size=(50,50))
p=plt.imshow(x)
...
x=y.copy()
p、 设置_数据(x)
plt.暂停(.1)

不相关,但是既然已经使用了numpy,那么可以使用切片来获取所有的邻居,比如
np.sum(x[i-1:i+2,j-1:j+2])-x[i,j]
。我也不会计算两到三次相同数量的邻居,只给它分配一个变量。最后,这里给出了
imshow
的一个动画示例:您认为在没有matplotlib的情况下可以对其进行动画制作吗?在我看来,这个资源有点慢,并且需要一段时间来计算和绘制图像。如果不是matplotlib,您可以查看openCV(安装起来非常困难,祝您好运)。同时,这里有一篇关于加速matplotlib的令人愉快的帖子(并非所有这些都适用于我在Mac上的工作,但有些是这样的):。如果你喜欢我的答案,一定要接受它来结束这个问题。