我需要找到二维数组中任何节点的基数和对角邻域。取下阵法。我从数组上的[1,1]开始搜索。它应该返回周围的0。我可以像下面的一些代码中显示的那样找到邻居,但是它们太慢了。在
[[0, 0, 0]
[0, 1, 0]
[0, 0, 0]]
我可以像这样强制它返回所有8个周围节点的坐标。在
^{pr2}$或者通过计算到所有节点的距离并返回带有距离的节点<;2,但是我发现的这些和其他解决方案都很慢。我学纽姆舞的全部原因是速度。我想我需要使用scipy卷积2d或cKDtree,但它们对我来说太复杂了。在
在切换到numpy之前,我处理这个问题的方法是数组中充满了实际的节点对象作为值。每个对象都将其x和y坐标存储在网格中以及一组相邻对象中。这样地。我不能再使用这种方法了,因为填充一个充满节点的巨大数组需要很长时间。即使在一个100x100的小地图上也有10000个节点对象!我计划以后不仅有更大的地图,而且有多个地图在任何时候都是活动的。实际上,由于节点印记,我尝试创建更大的贴图时内存不足。它适用于小型地下城,但不适用于模拟多张地图的世界。在
ExampleNode(object):
def __init__(self, x, y):
self.x = x
self.y = y
self.neighbors = set()
# The neighbors are found and added to the above set later.
node = Example(0, 0)
for neighbor in node.neighbors:
do thing with each neighbor
我需要一个节点邻居出于各种原因。使用元胞自动机平滑地图,在战斗中溅血,用广度优先搜索寻路等等。这是给我创造的流氓。蛮力方法适用于小型60x60地下城,但现在我正在扩展范围并生成世界地图。它只有200x200而且速度慢得令人恼火。在
假设输入数组名为
A
,它包含所有整数,我们只处理其中1s
的元素,并尝试获取它们的邻居。这里有一种方法-关于如何解释和使用输出的示例运行和说明-
^{pr2}$因此,我们根据
A
中的三个1s
分为三组。在第一个在左上角-
第二个在
(2,2)
-最后第三个是
(4,5)
-相关问题 更多 >
编程相关推荐