numpy代码输出维度不符 需将(145,)数组调整为(145,1)维度
问题根因
原代码执行流程:
- 对vec切片
vec[i0-5:i0+5, :]得到形状为(10, 145)的二维数组 - 沿axis=0计算均值时,默认移除被计算的轴维度,输出形状为(145,)的一维数组
np.squeeze仅能删除长度为1的维度,当前一维数组无符合条件的可压缩维度,该调用不会修改数组形状,属于冗余操作,最终输出无法匹配预期的(145,1)维度。
可直接使用的修改代码
- 方案1(无冗余逻辑,推荐)
mat = np.mean(vec[i0-5:i0+5, :], axis=0)[:, np.newaxis]
执行后输出数组形状为(145, 1),完全符合需求。
- 方案2(显式指定插入维度的位置)
mat = np.expand_dims(np.mean(vec[i0-5:i0+5, :], axis=0), axis=1)
执行效果与方案1完全一致。
- 方案3(利用
keepdims参数保留计算维度,后续转置匹配形状需求)
mat = np.mean(vec[i0-5:i0+5, :], axis=0, keepdims=True).T
执行后输出形状为(145,1),逻辑为计算均值时保留被操作的轴(输出形状为(1,145)),再通过转置得到列向量形状,该场景下可直接移除冗余的np.squeeze调用。
内容的提问来源于stack exchange,提问作者Kayla White
相关产品推荐
相关产品推荐

