gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:03 32 4
gpt4 key购买 nike

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

例如

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.]]

我可以使用两个 for 循环修改所有 x[i,j,:,:]。但是,我想知道是否有任何 pythonic 方法可以在不运行两个循环的情况下做到这一点。只是想知道:)

更新

实际用例:

dict_weights = copy.deepcopy(combined_weights)
for i in range(0, len(combined_weights[each_layer][:, 0, 0, 0])):
for j in range(0, len(combined_weights[each_layer][0, :, 0, 0])):
# Extract 5x5
trans_weight = combined_weights[each_layer][i,j]
trans_weight = np.fliplr(np.flipud(trans_weight ))
# Update
dict_weights[each_layer][i, j] = trans_weight

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

我只想知道是否可以在不运行 2 个 for 循环的情况下使用转置值更新元素 combined_weights[:,:,5, 5]。

谢谢。

最佳答案

简单地做-

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

关于python - 更新 numpy 数组的 3 维和 4 维元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42345336/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com