我在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