你说的没错,“取最后两个维度平均”在 NumPy 中通常会用 axis=(-2, -1),而你代码中写的是 axis=(1, 2),这其实是因为数据已经经过了切片 data[:, :, i, :, :][0],所以维度发生了变化


👇我们一步步来还原维度变化:

原始变量:

python
CopyEdit
data.shape == (1, T, C, H, W)   # 例如: (1, 13, 8, 31, 31)

你这一句:

python
CopyEdit
data[:, :, i, :, :][0]

先来看 data[:, :, i, :, :]

然后 [0] 表示选出第一个样本 → 剩下:

python
CopyEdit
data[:, :, i, :, :][0].shape == (T, H, W)


✅ 所以在 (T, H, W) 这个 3D 张量上:

你要对每个时间点的二维平面 (H, W) 取平均,保留时间维度(T),那就是:

python
CopyEdit
axis=(1, 2)  # 即对 H 和 W 求平均


🔁 如果你想用更稳健的方式(不管前面怎么切片),你也可以写成:

python
CopyEdit
np.mean(..., axis=(-2, -1))

这会始终取最后两个维度平均,无论维度长度如何变动,效果一样,但更鲁棒。