Numpy结合了两个2d martixs

时间:2016-02-06 04:36:14

标签: python numpy

我正在使用python中的拼图工作。

我想做的是覆盖要绘制的部分。

例如:

 gameMap = np.array([[1 0 0]
                     [0 1 0]
                     [0 1 1]])
 piece = np.array([[0, 1],
                   [1, 1]])

如何将地块放在我可以获得结果的地图上

[[1 1 0]
 [1 2 0]
 [0 1 1]]

[[1 0 0]
 [0 1 1]
 [0 2 2]]

提前致谢。

2 个答案:

答案 0 :(得分:3)

添加"的一种方式你在地图上的作品是使用切片。关键是选择一块与游戏形状相同的游戏地图。

gameMap[0:2, 0:2] += piece

输出:

[[1 1 0]
 [1 2 0]
 [0 1 1]]

OR

gameMap[1:3, 1:3] += piece

输出:

[[1 0 0]
 [0 1 1]
 [0 2 2]] 

答案 1 :(得分:1)

另一种方法是将第二个数组填充到与第一个数组相同的大小。

print gameMap + np.pad(piece, ((0,1), (0,1)), 'constant')
print gameMap + np.pad(piece, ((1,0), (1,0)), 'constant')

虽然切片当然是一种首选(并且性能更高)的方式,但如果你不想在原地使用pad,那么使用pad会更简单。