我在2D地图由ndarray
表示的项目中使用numpy的和Python:如何将Numpy数组切片到边界?
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)
和一个视野范围:
actor.range = 2
如何编写函数actor.view_map(map)
,使地图返回演员位置周围的区域直至范围。例如(使用上述地图),
range = 1
location = (3, 2)
=>
[[2,3,4],
[3,4,2],
[2,2,1]]
,但如果演员的范围扩展得太远我想要的地图充满了-1:
range = 1
location = (1,1)
[[-1,-1,-1],
[-1, 1, 2],
[-1, 2, 3]]
最简单的情况下是一系列的0,返回当前平方:
range = 0
location = (1, 2)
[[2]]
如何将我的地图切片到某个边界?
'actor.range'会有多少变化?如果它总是小于某个值(相对较小),那么就有一个简单的优化(用-1缓冲边并写一个简单的包装类)。 – 2013-04-07 20:54:28
它将始终小于地图宽度/高度的一半 - 但如果我在该级别向地图添加边界,则会将其大小加倍(?)... – sdasdadas 2013-04-07 20:56:08
更接近四倍(面积==长度平方),实际上。尽管如此,如果你能够承担内存使用量,它会大大加快索引速度。 – 2013-04-07 20:58:25