【问题标题】:Python: append kmean.labels_ to Numpy arrayPython:将 kmeans.labels_ 附加到 Numpy 数组
【发布时间】:2017-08-18 22:13:22
【问题描述】:
两个Numpy数组的大小分别是:
(406, 278)
(406,)
但是,在附加 Numpy 数组时出错:
ValueError:所有输入数组的维数必须相同
代码:
y = numpy.array(kmeans.labels_,copy=True)
x = numpy.append(x, y, axis=1); #error
x = numpy.append(x, y, axis=0); #error
【问题讨论】:
标签:
arrays
python-3.x
numpy
append
k-means
【解决方案1】:
正如错误所说,您正在尝试使用轴参数将一维数组附加到二维数组,并根据文档:
当指定axis 时,values 必须具有正确的形状。
您需要先将y 重塑为二维数组:
这两种方法都应该有效:
np.append(x, y[None, :], axis=0)
np.append(x, y.reshape(1,-1), axis=0)
【解决方案2】:
根据numpy documentation,
指定轴时,值必须具有正确的形状。
所以如果要将向量y = [0 1 2]附加到矩阵x = [[0, 0],[1, 1],[2, 2]]和axis=1上,首先需要将y转为矩阵形式,然后转置:
x = numpy.zeros((406,278))
y = numpy.zeros((406,))
x = numpy.append(x, numpy.transpose([y]), axis=1);
print(x.shape) # gives (406,279)