2017-08-31 152 views
0

所以我有一個矩陣叫做Vjunk,它是70x70x70x70。我有另一個矩陣,它是70x70叫它V.如何在Python中爲每個2D截面填充2D矩陣的4D矩陣

我想要做的是對於每個我,j矩陣Vjunk [:,:,i,j]是70乘70.我想改變這個矩陣所以它被它自己替換+ V [i,j]其中V [i,j]是我矩陣V的第ij個元素。

我試過 [Vjunk [:,:,i,j] = Vjunk [:,:,i,j] -beta * V [i,j]我在範圍內(humangrid_size)j在範圍內(assetgrid_size)]

但這個命令是不完整的。

回答

0

讓我們使用上Vjunk這個指數之:(M,N,I,J)

如果我是正確的,你想,每M,N組合,Vjunk(M,N,I,J)換成Vjunk(m,n,i,j)-β* V [i,j]。如果是這樣的目標,這個循環應該做的伎倆:

for m in range(70): 
    for n in range(70): 
     for i in range(70): 
      for j in range(70): 
       Vjunk[m,n,i,j] = Vjunk[m,n,i,j] - beta * V[i,j] 

說不上來,如果它要足夠快,即使它只是一個70 * 70 * 70 * 70的矩陣。仍有超過20M的業務。

i,j上的循環可能會被列表理解所取代。

+0

謝謝您的回覆。我可以用循環做,但只是想知道是否有更快的方法使用矢量化。 – mathemagician

+0

我不知道是否有,只是在我的電腦上用2個隨機浮動矩陣進行了試用。花了不到30秒。由於它不是矩陣太大,循環工作正常。 – Mathieu