你说的没错,“取最后两个维度平均”在 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, :, :]
:
(1, T, H, W)
然后 [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))
这会始终取最后两个维度平均,无论维度长度如何变动,效果一样,但更鲁棒。