Python 制作空矩阵

Python 制作空矩阵,python,numpy,k-means,Python,Numpy,K Means,如何生成包含K行的空矩阵?那么,如何通过将其输入到该特定行来向该数组添加内容呢?我这样做是为了在我组织了k-means算法的值之后,我可以找到每一行的平均值,这样我就可以设置新的质心 Clabel = [] Cvalue = [] clusters = [] #This is what I want to have as a matrix x = numpy.mean(df[:,0:d], axis = 1) count = 0 for i in range(n): temp = []

如何生成包含K行的空矩阵?那么,如何通过将其输入到该特定行来向该数组添加内容呢?我这样做是为了在我组织了k-means算法的值之后,我可以找到每一行的平均值,这样我就可以设置新的质心

Clabel = []
Cvalue = []
clusters = [] #This is what I want to have as a matrix
x = numpy.mean(df[:,0:d], axis = 1)
count = 0
for i in range(n):
    temp = []
    for j in range(k):
        dist = numpy.linalg.norm(ids[j] - x[i])
        temp.append(dist)
    v = numpy.argmin(temp)
    w = numpy.amin(temp)
    Clabel.append(v+1)
    Cvalue.append(w)
    clusters = numpy.concatenate(([Clabel],[Cvalue]), axis = 0)
问题是我这样做的方式,它有两行。第一行是集群的标签,第二行是我找到的所有值。有没有更好的方法来组织这件事?它当前以矩阵的形式返回

[[1.    1.    1.    3.    3.    1.    2.    3.   ]
 [0.325 0.15  0.1   0.325 0.425 0.3   0.1   0.45 ]]
我想要它做的就是这样

[[0.325, 0.15, 0.1, 0.3]
 [0.1]
 [0.325, 0.425, 0.45]]
任何帮助都将不胜感激。

编辑:

Numpy允许您使用基于条件的选择

import numpy as np
from pprint import pprint
a = np.array([[1.,    1.,    1.,    3.,    3.,    1.,    2.,    3.   ], \
[0.325, 0.15 , 0.1 ,  0.325, 0.425, 0.3,   0.1,   0.45 ]])

b = []
for val in set(a[0]):
    b.append(a[1][a[0]==val])
pprint(b)
原始答复:

因为您已经使用了numpy,如果您知道矩阵的维数,aka,行数和列数

import numpy as np
m = np.zeros(shape=(2,2))

m[0] = [1,2]
m[1] = [3,4]

希望这有帮助。

为什么需要初始化群集?您可以稍后使用“连接”进行设置;它完全覆盖了您在开始时分配的任何内容。但是如果您想添加到集群,那么使用temp和Clabel列表是正确的方法。