Python numpy多维数组拼接如何避免扁平化得到目标结构
问题原因
调用np.append()时如果不指定axis参数,NumPy默认会先将所有输入数组扁平化处理为一维结构后再执行拼接,因此最终得到的是丢失原有维度信息的一维数组,和预期不符。
你当前持有的两个数组C1、C2维度均为(1, 2, 2),期望输出的C3维度为(2, 2, 2),核心是沿第0轴(最外层维度)完成两个数组的拼接。
可行解决方案
- 方案1:使用通用拼接函数
np.concatenate(),显式指定拼接轴为0,这是NumPy数组合并场景下最推荐的写法:
import numpy as np C1 = np.array([[[0, 1],[0,2]]]) C2 = np.array([[[1, 1],[2,2]]]) # 沿第0轴拼接 C3 = np.concatenate([C1, C2], axis=0) # 验证输出 print(C3.shape) # 输出(2, 2, 2) print(C3) # 打印结果: # [[[0 1] # [0 2]] # # [[1 1] # [2 2]]]
- 方案2:如果要继续使用
np.append(),必须显式传入axis=0参数,不能省略该参数:
C3 = np.append(C1, C2, axis=0)
注:你原有测试代码里定义的
arC1、arC2两个空列表全程没有参与运算,属于冗余代码,可以直接删除。
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

