Python中如何将1维numpy数组追加到2维numpy数组
为什么代码输出一维数组
numpy的append方法如果不显式指定axis参数,默认会先将两个输入数组全部扁平化转为一维,再执行拼接操作,所以你最终得到的是合并后的一维数组,而非保留原二维结构。
正确实现方案
要得到预期的二维拼接结果,需要满足两个核心条件:
- 显式指定
axis=0,代表沿行维度做拼接 - 待追加的数组维度要和原数组匹配:原数组
arr1的形状是(2,3)(2行3列),待追加的[3,3,3]需要转为(1,3)形状的二维数组,才能正常拼接。
你可以选择以下任意一种写法实现:
方法1:使用np.append实现
import numpy as np arr1 = np.array([[1, 1, 1], [2, 2, 2]]) # 待追加数组加一层方括号转为二维,同时指定axis=0 arr2 = np.append(arr1, [[3, 3, 3]], axis=0) print(arr2)
方法2:使用np.vstack实现(写法更简洁)
np.vstack是垂直拼接专用方法,会自动处理一维数组的维度适配,不需要手动升维:
import numpy as np arr1 = np.array([[1, 1, 1], [2, 2, 2]]) arr2 = np.vstack([arr1, [3, 3, 3]]) print(arr2)
两种方法的输出均为预期结果:
[[1 1 1] [2 2 2] [3 3 3]]
内容的提问来源于stack exchange,提问作者theboss theboss
相关产品推荐
相关产品推荐

