python - Numpy:将矩阵行分配给另一个矩阵中的索引行的有效方法
问题描述
在以下代码中:
num_centroids = 8
vectors = # ndarray of shape (10000, 128)
centroids = np.random.uniform(-1., 1., (num_centroids , vectors.shape[1]))
for _ in range(max_iterations):
distances = sklearn.metrics.pairwise.euclidean_distances(vectors, centroids)
# can this (the centroid update) be done any cleaner?
for c in range(num_centroids):
centroids[c] = np.mean(vectors[np.argmax(distances, axis=1) == c], axis=0)
考虑到索引 ( ) 和向量索引相同,是否有更有效或更简洁的方法(除了 for 循环)将每个centroid
(矩阵中的一行)分配给从索引矩阵centroids
计算的平均值?vector
centroid
c
argmax
解决方案
推荐阅读
- python - 添加一个可以将数值分成低中位数和高段的列?
- html - 如何使用我当前的代码将我的视频放入下拉菜单中?
- c++ - 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- php - Laravel SQLSTATE[HY000] [2002] 连接被拒绝但修补程序可以工作
- haskell - 为什么类型 f (fbc) (f (fab) (fac)) 不匹配 (.)?
- javascript - 在大量句子中查找 n-gram 频率
- php - 启用 FOS 用户捆绑电子邮件注册
- php - 从另一个表中选择按唯一值分组的表中的所有行
- javascript - 承诺决议
- javascript - 在js中从websocket读取数据