我想得到向量列表和向量列表之间的cdist
。在
换句话说,我想做[cdist(px, cent) ** 2 for px, cent in izip(pixelwise, centroids)]
的等价物。在
那为什么不干脆这么做呢?因为这是我计划中最慢的部分。我想看看是否有一种在numpy/scipy中以本机方式完成这项任务的速度,比我在python中使用list expression+zip的方式更快。在
示例代码:
pixelwise = allframes.transpose((1, 0, 2))
centroids = pixelwise.mean((0,)).reshape((pixelwise.shape[0], 1, 3))
variances += weight * numpy.sum(
[cdist(px, cent, 'euclidean') ** 2 for px, cent in izip(pixelwise, centroids)])
像素的示例值:
^{pr2}$对于质心,你得到的结果是:
array([[[ 1.75, 2. , 2.5 ]],
[[ 2. , 2.5 , 2.75]],
[[ 2. , 2. , 2. ]]])
如果我正确地理解了你的意图,你就是在试图估计每一组向量与其他向量的质心之间的距离。如果是这样的话,看起来您缺少组中向量数量的标准化因子。尽管如此,你可以通过简单的考虑得到这个距离的一个很好的估计
即质心之间的距离。这是一阶近似。如果你把这些数据用于一个算法,它可能已经足够好了,因为它可以找到最分离的向量集。在
由于注释表明您最初寻找的功能没有内置到scipy中,因此您必须独立地进行每个求和。但是,这个问题是令人尴尬的并行问题,因此使用multiprocessing可能会有所帮助。在
相关问题 更多 >
编程相关推荐