如何用Numpy将坐标数组与标签数组按行合并?
Numpy数组合并的正确操作方法
你遇到的问题核心是维度不匹配:labels是一维数组(形状为(10,)),即便执行labels.T,它的形状依然是(10,),而co_ords是二维数组(形状(10,2))。np.hstack要求参与拼接的数组除了拼接轴外,其他维度必须一致,一维和二维数组直接拼接会触发维度适配错误,最终得到扁平化结果。
以下是几种正确的解决方法:
方法1:手动将labels转为二维列向量后用hstack
通过reshape或[:, np.newaxis]给一维数组添加一个新维度,转成(10,1)的二维列向量,再和co_ords拼接:
import numpy as np co_ords = np.random.rand(10,2) labels = np.random.choice(2,10) # 方式A:用reshape转换维度 labels_col = labels.reshape(-1, 1) combined = np.hstack((co_ords, labels_col)) # 方式B:用np.newaxis快速添加维度 combined = np.hstack((co_ords, labels[:, np.newaxis]))
方法2:使用np.concatenate指定拼接轴
同样需要先将labels转为二维列向量,再通过axis=1指定沿列方向拼接:
combined = np.concatenate((co_ords, labels.reshape(-1,1)), axis=1)
方法3:用np.column_stack自动处理维度
np.column_stack专门用于列方向拼接数组,会自动将一维数组转换为列向量,无需手动调整维度:
combined = np.column_stack((co_ords, labels))
验证结果:合并后的数组形状为(10,3),每行前两个元素是原坐标,第三个元素是对应标签。
内容的提问来源于stack exchange,提问作者jolene
相关产品推荐
相关产品推荐

