gpt4 book ai didi

python - Numpy:在某些位置修改数组元素

转载 作者:行者123 更新时间:2023-11-28 22:36:57 24 4
gpt4 key购买 nike

我有一个数组a:

array([[[[14, 59, 18, 92],
[91, 38, 58, 23],
[33, 52, 93, 68],
[19, 21, 50, 77]],

[[90, 37, 22, 55],
[56, 54, 10, 16],
[83, 20, 36, 3],
[84, 87, 85, 81]]],

[[[ 0, 45, 72, 5],
[49, 46, 94, 53],
[34, 51, 75, 8],
[27, 79, 35, 15]],

[[ 7, 86, 64, 31],
[12, 70, 89, 62],
[13, 63, 88, 25],
[39, 11, 26, 6]]]])

我也有口罩b:

array([[[[ 0.,  0.,  0.,  1.],
[ 1., 0., 0., 0.],
[ 0., 1., 1., 0.],
[ 0., 0., 0., 0.]],

[[ 0., 0., 0., 0.],
[ 1., 0., 1., 0.],
[ 0., 0., 0., 0.],
[ 0., 1., 1., 0.]]],

[[[ 0., 0., 0., 0.],
[ 1., 0., 1., 0.],
[ 0., 0., 1., 0.],
[ 0., 1., 0., 0.]],

[[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 1., 1., 0.],
[ 0., 0., 0., 0.]]]])

如何修改数组 a 中与掩码 b 中的元素相对应的那些元素?

特别是,我有一个数组 c:

array([[[[ 0,  1],
[ 2, 3]],

[[ 4, 5],
[ 6, 7]]],

[[[ 8, 9],
[10, 11]],

[[12, 13],
[14, 15]]]])

如何将 c 添加到 a,以便只添加掩码 b 指示的元素?

(这是我需要做的,通过卷积神经网络中的最大池化层反向传播错误)

最佳答案

如果您将 b 解释为 bool 掩码,那将非常容易:

b_mask = b.astype(bool)
d = a.copy()
d[b_mask] = a[b_mask] + c.ravel()
d

给我

array([[[[ 14,  59,  18,  92],
[ 92, 38, 58, 23],
[ 33, 54, 96, 68],
[ 19, 21, 50, 77]],

[[ 90, 37, 22, 55],
[ 60, 54, 15, 16],
[ 83, 20, 36, 3],
[ 84, 93, 92, 81]]],


[[[ 0, 45, 72, 5],
[ 57, 46, 103, 53],
[ 34, 51, 85, 8],
[ 27, 90, 35, 15]],

[[ 7, 98, 64, 31],
[ 12, 70, 102, 62],
[ 13, 77, 103, 25],
[ 39, 11, 26, 6]]]])

或者如果你想要它就地:

b_mask = b.astype(bool)
a[b_mask] = a[b_mask] + c.ravel()

关于python - Numpy:在某些位置修改数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041327/

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