使用numpy.concatenate拼接数组时遇零维数组无法拼接错误求助
问题
执行以下代码时触发错误:
print("****SHAPE***",input_feature_train.shape,target_feature_train_df_reshaped.shape) train_arr = np.concatenate([input_feature_train,target_feature_train_df_reshaped],axis=1)
错误输出:
****SHAPE*** (14599, 234) (14599, 1) 回溯(最近的调用最后): line 87, in initiate_data_transformation train_arr = np.concatenate([input_feature_train,target_feature_train_df_reshaped],axis=1) File "<__array_function__ internals>", line 200, in concatenate ValueError: 零维数组无法拼接
打印的数组形状显示为(14599, 234)和(14599, 1),但调用np.concatenate(axis=1)时却报错“零维数组无法拼接”,需排查解决。
排查与解决方法
1. 确认数组实际类型与维度
报错提示存在零维数组,说明打印的shape可能有误导性——其中一个变量大概率不是真正的二维numpy数组,可能是Pandas Series、标量或维度异常的对象。先执行以下代码验证:
print("输入特征类型/维度:", type(input_feature_train), np.ndim(input_feature_train)) print("目标特征类型/维度:", type(target_feature_train_df_reshaped), np.ndim(target_feature_train_df_reshaped))
2. 统一转换为标准二维numpy数组
如果其中一个变量是Pandas对象(如Series),先转换为numpy数组,再强制保证二维结构:
# 处理输入特征 input_arr = input_feature_train.to_numpy() if hasattr(input_feature_train, 'to_numpy') else input_feature_train # 处理目标特征,确保是(n_samples, 1)的二维结构 target_arr = target_feature_train_df_reshaped.to_numpy().reshape(-1, 1) if hasattr(target_feature_train_df_reshaped, 'to_numpy') else target_feature_train_df_reshaped.reshape(-1, 1) # 执行拼接 train_arr = np.concatenate([input_arr, target_arr], axis=1)
3. 用更灵活的拼接函数替代
np.hstack会自动处理一维转二维的场景,比np.concatenate更适配这种情况:
train_arr = np.hstack([input_feature_train, target_feature_train_df_reshaped])
4. 验证拼接结果
完成拼接后,打印形状确认是否符合预期:
print("拼接后数组形状:", train_arr.shape)
内容的提问来源于stack exchange,提问作者James Souder
相关产品推荐
相关产品推荐

