簡而言之:我有兩個矩陣(或陣列):添加不同尺寸/形移位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