更新numpy数组的3和4维元素

时间:2017-02-20 13:03:34

标签: python arrays numpy

我有一个numpy形状的阵列[12,8,5,5]。我想修改每个元素的第3维和第4维的值。

例如

<div class="has-parent" style="padding-left: 1em;">
  Component 6
</div>

输出:

import numpy as np
x = np.zeros((12, 80, 5, 5))

print(x[0,0,:,:])

修改值:

[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]

输出:

 y = np.ones((5,5))
 x[0,0,:,:] = y
 print(x[0,0,:,:])

我可以使用两个[[ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.]] 循环修改所有x[i,j,:,:]。但是,我想知道是否有任何pythonic方式来做它而不运行两个循环。只是好奇地知道:)

更新

实际使用案例:

for

注意:combined_weights的尺寸i,j可以变化。此列表中有大约200个元素,具有不同的i和j维度,但第3和第4维度始终相同(即5x5)。

我只是想知道我是否可以使用转置值更新combine_weights [:,:,5,5]元素而不运行2 for循环。

感谢。

1 个答案:

答案 0 :(得分:2)

简单地做 -

dict_weights[each_layer] = combined_weights[each_layer][...,::-1,::-1]