我在一个项目中使用 Numpy 和 Python,其中二维 map 由 ndarray
表示:
map = [[1,2,3,4,5],
[2,3,4,2,3],
[2,2,2,1,2],
[3,2,1,2,3],
[4,6,5,7,4]]
MAP_WIDTH = 5, MAP_HEIGHT = 5
一个对象有一个元组位置:
actor.location = (3,3)
和一个 View 范围:
actor.range = 2
如何编写函数 actor.view_map(map)
,以便 map 返回 Actor 位置周围的区域,最大范围。例如(使用上面的 map ),
range = 1
location = (3, 2)
=>
[[2,3,4],
[3,4,2],
[2,2,1]]
但如果 actor 的范围延伸得太远,我希望 map 填充 -1:
range = 1
location = (1,1)
[[-1,-1,-1],
[-1, 1, 2],
[-1, 2, 3]]
最简单的情况是范围为 0,它返回当前方 block :
range = 0
location = (1, 2)
[[2]]
如何将我的 map 切片到特定边界?
最佳答案
因此,多亏了 Joe Kington,我在我的 map 周围添加了一个边框(用 -1 填充)。
这是我的做法,但这可能不是很 Pythonic,因为我刚刚开始使用语言/库:
map = numpy.random.randint(10, size=(2 * World.MAP_WIDTH, 2 * World.MAP_HEIGHT))
map[0 : World.MAP_WIDTH / 4, :] = -1
map[7 * World.MAP_WIDTH / 4 : 2 * World.MAP_WIDTH, :] = -1
map[:, 0 : World.MAP_HEIGHT / 4] = -1
map[:, 7 * World.MAP_HEIGHT / 4 : 2 * World.MAP_WIDTH] = -1
关于python - 如何将 Numpy 数组切片到边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15867663/