如何将1D numpy数组内容拆分后追加到两个2D numpy数组的列中
你之前拼接失败的核心原因是待追加的1D数组维度和原二维数组不匹配,只要先把拆分后的第三数组片段转为二维列向量,再按列拼接即可实现需求。
可直接运行的示例代码
import numpy as np # 构造示例数据 arr1 = np.array([[1,2],[3,4],[4,5]]) arr2 = np.array([[6,7],[8,9],[10,11]]) arr3 = np.array([1,2,3,4,5,6]) # 按长度拆分第三个数组 arr3_part1 = arr3[:len(arr1)] arr3_part2 = arr3[len(arr1):] # 追加为新列:先将1D片段转为(n,1)形状的列向量,再按列拼接 # 方法1:使用np.concatenate指定axis=1按列拼接 arr1_final = np.concatenate([arr1, arr3_part1.reshape(-1, 1)], axis=1) arr2_final = np.concatenate([arr2, arr3_part2.reshape(-1, 1)], axis=1) # 方法2:使用np.hstack水平拼接,效果完全一致 # arr1_final = np.hstack([arr1, arr3_part1[:, np.newaxis]]) # arr2_final = np.hstack([arr2, arr3_part2[:, np.newaxis]])
结果验证
打印输出即可得到你需要的结果:
>>> arr1_final array([[1, 2, 1], [3, 4, 2], [4, 5, 3]]) >>> arr2_final array([[ 6, 7, 4], [ 8, 9, 5], [10, 11, 6]])
注意事项
reshape(-1,1)的作用是自动计算行数,将1D数组转为只有1列的二维数组,和原数组的维度匹配后才能按列拼接- 之前使用
np.vstack是按行拼接,维度逻辑不符;np.append不指定axis参数时会将所有数组扁平化输出,也无法实现按列追加的效果
内容的提问来源于stack exchange,提问作者MattPollard44
相关产品推荐
相关产品推荐

