gpt4 book ai didi

python - 比较网格中的邻居 bool numpy 数组

转载 作者:行者123 更新时间:2023-11-28 18:03:51 25 4
gpt4 key购买 nike

我想编写一个函数来比较网格中一个节点的 8 个邻居。当至少 3 个邻居与中心节点具有相同的值时,我们可以将该节点定义为快乐节点。

例如在这个数组中,中心节点和值为 0,我们看到它有 3 个邻居为 0,所以节点是快乐的:

 array([[ 1,  0,  1],
[ 1, 0, 1],
[-1, 0, 0]])

我希望得到 TrueFalse 的 bool 值输出。

我能想到这样的东西吗?或者我能轻松地使用 numpy 吗?

def nodehappiness(grid, i, j, drempel=3):
if i,j => 3:
node == True

提前致谢

最佳答案

试试这个:

def neighbours(grid, i, j):
rows = np.array([-1, -1, -1, 0, 0, 1, 1, 1])
cols = np.array([-1, 0, 1, -1, 1, -1, 0, 1])
return grid[rows+i,cols+j]

编辑:示例:

grid = np.arange(25).reshape((5,5))
#array([[ 0, 1, 2, 3, 4],
# [ 5, 6, 7, 8, 9],
# [10, 11, 12, 13, 14],
# [15, 16, 17, 18, 19],
# [20, 21, 22, 23, 24]])

neighbours(grid, 0, 0)
# array([24, 20, 21, 4, 1, 9, 5, 6])

解释:

借助 numpy,您可以使用负索引,从而轻松访问数组的最后一项。这也适用于多个维度:

x = np.array([0,1,2,3])
x[-1]
# 3

x.reshape((2,2))
#array([[0, 1],
# [2, 3]])

x[-1,-1]
# 3

您对矩阵的 8 个条目感兴趣。

  1. 左上方 -> 行 - 1,列 - 1
  2. 上面 -> 行 - 1,列 + 0
  3. 右上方 -> 行 - 1,列 + 1
  4. 左 -> 行 + 0,列 - 1
  5. ...

这就是数组 rowscols 所代表的内容。通过添加 ij,您可以获得这些坐标周围的所有条目。

关于python - 比较网格中的邻居 bool numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54690743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com