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

Python 如何在n维网格中找到点的所有相邻单元?,python,Python,寻找表示n维网格中点的相邻点的相邻元组(但不是对角相邻元组),其中n是变化的。我有一个元组,有n个值,索引为零,每个值都是点在特定维度中的位置。我还有另一个表示数组形状的n维元组。我不确定我是否理解你的问题,特别是因为其中没有可能澄清问题的代码,这里有一个猜测。它将相邻的非对角点定义为距离目标元组的平方正好为1的点 我只测试了一些二维非任意元组,每一个代表一个中间的8个可能点中的一个,以便可以容易地检查结果。不管怎样,它似乎在用由任意值组成的元组扩展到更高维度时也会起作用 dim = 2 tar

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

我不确定我是否理解你的问题,特别是因为其中没有可能澄清问题的代码,这里有一个猜测。它将相邻的非对角点定义为距离目标元组的平方正好为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)]

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

我很难理解你的问题,如果我理解得很好,你有n维数据,为什么要将其存储在元组中而不是列表或numpy数组中?如何将其更新为同时包含对角单元格?@UzairA.:将
if
更改为只检查非零值以包含它们。