Python 制作空矩阵
如何生成包含K行的空矩阵?那么,如何通过将其输入到该特定行来向该数组添加内容呢?我这样做是为了在我组织了k-means算法的值之后,我可以找到每一行的平均值,这样我就可以设置新的质心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 = []
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列表是正确的方法。