簡體   English   中英

NumPy:向量化到一組點的距離之和

[英]NumPy: vectorize sum of distances to a set of points

我正在嘗試在Python / NumPy中實現k -medoids聚類算法。 作為該算法的一部分,我必須計算從對象到它們的“ medoids”(集群代表)的距離之和。

我有:五點距離矩陣

n_samples = 5
D = np.array([[ 0.        ,  3.04959014,  4.74341649,  3.72424489,  6.70298441],
              [ 3.04959014,  0.        ,  5.38516481,  4.52216762,  6.16846821],
              [ 4.74341649,  5.38516481,  0.        ,  1.02469508,  8.23711114],
              [ 3.72424489,  4.52216762,  1.02469508,  0.        ,  7.69025357],
              [ 6.70298441,  6.16846821,  8.23711114,  7.69025357,  0.        ]])

一組初始葯物

medoids = np.array([0, 3])

和集群成員

cl = np.array([0, 0, 1, 1, 0])

我可以使用計算總和

>>> np.sum(D[i, medoids[cl[i]]] for i in xrange(n_samples))
10.777269622938899

但這使用了Python循環。 我是否缺少某種用於計算此和的矢量化習慣用法?

怎么樣:

In [17]: D[np.arange(n_samples),medoids[cl]].sum()
Out[17]: 10.777269629999999

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM