我正在计算一个像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函数可以让我摆脱两个嵌套循环?
答案 0 :(得分:3)
看起来你正在计算距离矩阵。 scipy.spatial.distance
包含几个专门的,优化的功能,可以完全实现这一目标。
在你的情况下:
cost = scipy.spatial.distance.cdist(chroma1.T, chroma2.T)
应该完全按照自己的意愿行事。