python - 如何将 Numpy 数组切片到边界?

标签 python numpy

我在一个项目中使用 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/

相关文章:

python - 如何在我的程序中更好地使用日志记录模块?

python - 使用 Python 的 KMeans 算法聚类地理位置坐标(lat,long 对)

python - 压缩 numpy 数组的有效方法(python)

python - 使用逻辑回归的泰坦尼克号机器学习问题

python - python 文件中的奇怪行,无法提取列

python - 为什么即使协方差是半正定的,bivariate_normal 也会返回 NaN?

python - Groupby 和绘制条形图

python : defaultdict every value is updated

python - python的 "re.compile"有什么作用?

python - 将 sklearn 的 GridSearchCV 与管道一起使用,只需预处理一次