有没有办法只将两个 numpy 数组的特定元素相加?

问题描述 投票:0回答:1

我正在尝试将两个 numpy 数组的特定元素加在一起。

例如,考虑这两个数组:

f1 = np.array([
      [[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.]]
     ])

f2 = np.array([
      [[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., 1., 1.]]
     ])

我想创建一个如下所示的新数组:

[[0.5, 0.5, 0.5],
 [0.5, 0.5, 0.5],
 [0.5, 0.5, 0.5]]

对于 f1 和 f2 中的每个包含三个值的数组,我想要执行的操作类似于

(f1[r][c][0]+f2[r][c][0])/2

我知道

np.add(f1,f2)/2
会产生接近我正在寻找的结果,除了它会对数组的每个元素执行添加和缩放操作,而不是仅对每个长度为 3 的子数组中的第一个元素执行添加和缩放操作。最好的方法是将每个原始数组分解为三个单独的数组,从而允许我使用
np.add(f1,f2)/2

如果这是重复的,我深表歉意,我似乎找不到任何有关执行此类操作的信息。

python numpy numpy-ndarray
1个回答
0
投票

您可以使用:

(f1[...,0]+f2[...,0])/2

输出:

array([[0.5, 0.5, 0.5],
       [0.5, 0.5, 0.5],
       [0.5, 0.5, 0.5]])
© www.soinside.com 2019 - 2024. All rights reserved.