如何在n维网格中找到点的所有相邻单元格?

时间:2017-10-29 03:28:45

标签: python

寻找相邻的 - 但不是对角相邻的 - 元组,表示n维网格中点的相邻点,其中n变化。我有一个带有n个值的元组,零索引并且每个值都是特定维度中的点的位置。我还有另一个表示数组形状的n维元组。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,特别是因为它没有代码可以澄清事情 - 尽管如此,这是一个猜测。它将相邻的非对角点定义为与目标元组的距离平方恰好为1的对角点。

我只测试了一些二维非任意元组 - 每个元组代表中间一个的8个可能点之一 - 以便可以轻松检查结果。无论如何,当使用由任意值组成的元组扩展到更高维度时,它似乎也会起作用。

dim = 2
target = (1, 1)
tuples = [(0, 0), (1, 0), (2, 0),
          (0, 1), (1, 1), (2, 1),
          (0, 2), (1, 2), (2, 2)]

adjacents = []
for tuple_ in tuples:
    if sum((target[k]-tuple_[k])**2 for k in range(dim)) == 1:  # Non-diagonal?
        adjacents.append(tuple_)

print(adjacents)  # -> [(1, 0), (0, 1), (2, 1), (1, 2)]

如果我的理解是正确的并且这是正确的,那么它可以被重写并转换为“一行”列表理解。