如何堆叠二维NumPy数组并计算平均值以合并多循环输出?
解决方案:沿新增轴堆叠后求平均
要实现对应位置元素的平均值计算,你需要将每次循环得到的二维数组**沿新的轴(推荐axis=0)**堆叠成三维数组,然后在堆叠的轴上计算平均值。
具体步骤:
- 收集循环中的数组:先把每次循环生成的二维数组存入一个列表。
- 堆叠数组:使用
np.stack()(或直接用np.array())沿axis=0堆叠,将多个(3,3)的二维数组变成(N,3,3)的三维数组(N为循环次数)。 - 计算平均值:在堆叠的轴(
axis=0)上调用np.mean(),得到每个位置的均值二维数组。
代码示例:
import numpy as np # 模拟循环收集数组 arr_list = [] arr1 = np.arange(1, 10).reshape(3, 3) arr_list.append(arr1) arr2 = np.arange(10, 19).reshape(3, 3) arr_list.append(arr2) # 沿axis=0堆叠成三维数组 stacked_arr = np.stack(arr_list, axis=0) # 等价于直接转成numpy数组:stacked_arr = np.array(arr_list) # 沿堆叠轴计算平均值 mean_arr = np.mean(stacked_arr, axis=0) print(mean_arr)
输出结果:
array([[ 5.5, 6.5, 7.5], [ 8.5, 9.5, 10.5], [11.5, 12.5, 13.5]])
补充说明:
你也可以选择沿axis=-1(最后一维)堆叠(用np.dstack()),得到形状为(3,3,N)的三维数组,之后在axis=-1上求平均,结果完全一致。但沿axis=0堆叠更符合循环的样本顺序逻辑,可读性更强。
内容的提问来源于stack exchange,提问作者r.carnahan
相关产品推荐
相关产品推荐

