用numpy计算距离矩阵的更快方法?

时间:2016-01-27 15:50:40

标签: python numpy matrix scipy

我正在计算一个像numpy / scipy这样的矩阵:

cost = np.empty([chroma1.data.shape[1], chroma2.data.shape[1]])

for x, cx in enumerate(chroma1.transpose()):
    for y, cy in enumerate(chroma2.transpose()):
        cost[x, y] = sp.distance.euclidean(cx, cy)

这需要相当长的时间。是否有任何numpy / scipy函数可以让我摆脱两个嵌套循环?

1 个答案:

答案 0 :(得分:3)

看起来你正在计算距离矩阵。 scipy.spatial.distance包含几个专门的,优化的功能,可以完全实现这一目标。

在你的情况下:

cost = scipy.spatial.distance.cdist(chroma1.T, chroma2.T)

应该完全按照自己的意愿行事。