如何围绕矩阵中的特定点扩展网格?

问题描述 投票:0回答:2

我有以下数组,我想扩展 X 周围的区域并将 X 周围的数组元素从 0 变为 1。关于如何做到这一点有什么建议吗?

从这个数组

[[0,0,0,0,0,0,0],
 [0,0,0,x,0,0,0],
 [0,0,0,0,0,0,0]]

到这个数组

[[0,0,1,1,1,0,0],
 [0,0,1,x,1,0,0],
 [0,0,1,1,1,0,0]]
python arrays grid robotics
2个回答
0
投票

不是最佳解决方案,但对我有用。我使用 ROS 和 nav_msgs/OccupancyGrid 消息:

    def draw_thickened_grid_point(self, index):
        indexes_arround = []
        indexes_arround.append(index + 1)
        indexes_arround.append(index - 1)
        indexes_arround.append(index + self._map_width)
        indexes_arround.append(index - self._map_width)
        indexes_arround.append(index + self._map_width+1)
        indexes_arround.append(index + self._map_width-1)
        indexes_arround.append(index - self._map_width+1)
        indexes_arround.append(index - self._map_width-1)
        self._grid.data[int(index)] = 100
        for ind in indexes_arround:
            if(self._grid.data[int(ind)] == 0):
                self._grid.data[int(ind)] = 30

-1
投票

这是一个可能的解决方案,可以改进。我真的很想看到更好的实施。

for i in range(len(a)):
    for j in range(len(a[i])):
            if (a[i][j] =="x"):

                if(len(a)>i+1):
                    a[i+1][j] =1
                    if(len(a[i])>j+1):
                        a[i+1][j+1] =1
                    if(len(a[i])>j-1):
                        a[i+1][j-1] =1

                if(len(a)>i-1):
                    a[i-1][j] =1
                    if(len(a[i])>j+1):
                        a[i-1][j+1] =1  
                    if(len(a[i])>j-1):
                        a[i-1][j-1] =1
                if(len(a[i])>j+1):
                        a[i][j+1] =1
                if(len(a[i])>j-1):
                        a[i][j-1] =1

打印(一)

© www.soinside.com 2019 - 2024. All rights reserved.