【发布时间】:2018-12-09 19:14:19
【问题描述】:
假设我在 2x4 矩阵中有一些数据(4 个数据点,2 个特征)
X = np.array([[4,3,5,6], = [x1 x2 x3 x4]
[7,4,6,5]])
一个“最接近”的 3x4 矩阵,表示离每个数据点 x 最近的簇 k。 (3 个集群,4 个数据点)
C = [[1 0 1 0]
[0 0 0 1]
[0 1 0 0]]
我想找到一种使用 numpy 计算每个集群中数据点平均值的有效方法。
我的想法是构建一个如下所示的矩阵:
idea = [[x1 0 x3 0 ]
[0 0 0 x4]
[0 x2 0 0 ]]
将各列中的元素相加,然后除以np.sum(c,axis=1) 中的各个元素,因为平均值应该只考虑属于该集群的数据点(即不考虑零点)。
这个例子的最终预期输出应该是一个 3x2 矩阵:
output = [(x1+x3)/2 = [ [4.5 6.5]
x4 [6 5 ]
x2 ] [3 4 ]]
- 我什至无法构建一个看起来像我的
idea矩阵的矩阵。 - 我不知道这是否是解决此问题的最有效方法
我想避免使用任何 for 循环。
【问题讨论】:
-
你能告诉我们给定样本的最终预期输出吗?你能列出一个有效的循环解决方案吗?
-
@Divakar 对不起,你是对的。完毕。我正在寻找一个概念性的答案,而不是一个实际的答案。在这方面,我什至没有费心尝试实施“循环”解决方案。
-
不应该是
[ [4.5 6.5],[6 5 ][3 4 ]]吗? -
@Divakar 完全正确!谢谢!
标签: python numpy scipy k-means