简而言之:我有两个矩阵(或阵列):添加不同尺寸/形移位NumPy的矩阵
import numpy
block_1 = numpy.matrix([[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0]])
block_2 = numpy.matrix([[ 1, 1, 1],
[ 1, 1, 1],
[ 1, 1, 1],
[ 1, 1, 1]])
我的block_2
在block_1
元件的位移坐标系。
pos = (1,1)
我希望能够加入他们(快),可以得到:
[[0 0 0 0 0]
[0 1 1 1 0]
[0 1 1 1 0]
[0 1 1 1 0]]
在长:我想一个快速的方法来添加两个不同形状的矩阵合在一起,的其中一个矩阵可以被移动。生成的矩阵必须具有第一个矩阵的形状,并将两个矩阵之间的重叠元素相加。如果没有重叠,只是第一个矩阵返回unmutated。
我有正常工作的功能,但它是一种丑陋,按元素:
def add_blocks(block_1, block_2, pos):
for i in xrange(0, block_2.shape[0]):
for j in xrange(0, block_2.shape[1]):
if (i + pos[1] >= 0) and (i + pos[1] < block_1.shape[0])
and (j + pos[0] >= 0) and (j + pos[0] < block_1.shape[1]):
block_1[pos[1] + i, pos[0] + j] += block_2[i,j]
return block_1
可以播放或者是切片做到这一点?
我觉得我可能失去了一些明显的东西。
我最终做了一些非常相似的事情。创建切片对象的能力非常好,谢谢! – fraxel 2012-03-27 12:06:16
我认为v_range1和h_range1代码缺少最终结束')'。 – 2012-03-28 15:03:02
谢谢!我只是修正了这一点。 – jorgeca 2012-03-28 17:58:39