2017-08-31 113 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