如何将NumPy二维数组(1316,21)扩充至(1329,21)大小
错误操作的根因
使用np.append时没有指定axis参数是导致数组被展平的核心原因:该参数缺省时,NumPy会将所有输入数组全部展平为一维序列,再完成末尾拼接。
原数组总元素数为1316*21=27636,加上传入的13个零元素,总长度恰好是你观察到的27649,和实际运行结果完全匹配。
符合维度要求的实现方案
所有方案均可最终得到形状为(1329, 21)的数组,可按需选择:
正确参数配置下使用
np.append
需要满足两个匹配要求:将待追加内容构造为与原数组列数一致的二维形状,同时指定axis=0表示沿行方向(数组第0维)拼接。
因新增区域无存储数值要求,用np.empty替代np.zeros可省去不必要的初始化开销,示例代码:x = np.append(x, np.empty((13, 21)), axis=0)使用
np.concatenate实现同维度拼接
与np.append底层逻辑一致,但强制要求显式传入拼接轴,从根源上避免默认展平的问题:x = np.concatenate([x, np.empty((13, 21))], axis=0)使用
np.pad按维度指定补全范围
无需手动计算待拼接数组的形状,直接按每个维度的补全需求配置参数即可:# 行方向(第0维)末尾补13个单位,列方向(第1维)不做补全 x = np.pad(x, pad_width=((0, 13), (0, 0)))由于新增区域无强制数值要求,
np.pad默认的内存值即可满足需求。
内容的提问来源于stack exchange,提问作者mbohde
相关产品推荐
相关产品推荐

