如何对两个NumPy数组的特定元素执行相加运算?
NumPy数组特定元素的平均运算实现方法
不需要拆分原数组,直接通过索引提取目标元素就能高效完成需求,具体实现如下:
核心思路
针对3D数组f1和f2,提取所有[r][c]位置子数组的第一个元素(即第三个维度的索引0),再对提取出的2D数组做平均运算。
代码实现
import numpy as np 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.]] ]) # 提取目标元素并计算平均 result = (f1[..., 0] + f2[..., 0]) / 2 # 也可以用np.add替代+:result = np.add(f1[..., 0], f2[..., 0]) / 2 print(result)
索引说明
f1[..., 0]是NumPy的省略号索引,等价于f1[:, :, 0],作用是提取数组前两个维度(行、列)的所有元素,仅保留第三个维度的第0个元素,最终得到一个3×3的2D数组。- 对提取后的数组直接做加减和除法运算,完全符合你需要的
(f1[r][c][0]+f2[r][c][0])/2逻辑,且运算效率远高于循环或拆分数组。
内容的提问来源于stack exchange,提问作者aomerrill98
相关产品推荐
相关产品推荐

