【发布时间】:2021-05-18 18:52:41
【问题描述】:
我正在尝试使用简单的 numpy 数组来制作阿贝尔沙堆模型。
当“堆”为 4 >= 时,它会在其邻居中崩溃。
我了解“重力”的工作原理,但我想不出一种方法。
这是制作我的数组的代码:
import numpy as np
spile = np.zeros((5, 5), dtype=np.uint32)
spile[2, 2] = 16
这给了我以下信息:
array([[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 16, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0]], dtype=uint32)
现在,我需要执行这些计算步骤的“重力”代码:
array([[ 0, 0, 0, 0, 0],
[ 0, 0, 4, 0, 0],
[ 0, 4, 0, 4, 0],
[ 0, 0, 4, 0, 0],
[ 0, 0, 0, 0, 0]], dtype=uint32)
array([[ 0, 0, 1, 0, 0],
[ 0, 2, 1, 2, 0],
[ 1, 1, 0, 1, 1],
[ 0, 2, 1, 2, 0],
[ 0, 0, 1, 0, 0]], dtype=uint32)
最后一个数组是我想要得到的最终结果。
我不是想让你们为我编写代码,我只是需要一些想法,因为我从来没有做过这样的事情(但如果你是那种人,请随时提供代码:p)。
【问题讨论】:
标签: python numpy cellular-automata