首页 > 解决方案 > 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计算的平均值?vectorcentroidcargmax

标签: pythonnumpy

解决方案


推荐阅读