大型点对距离矩阵计算

在算密度聚类需要算nxn的距离矩阵,使用经典for循环发现根本算不完成,有没有什么好的办法提高效率?

不要用python for循环来计算,python for效率很低下。
scipy.spatial.distance.cdist来计算试试。
如果效率还不行,那么只能用C/C++实现计算距离矩阵的计算,然后导出到python模块

import numpy as np
from scipy.spatial.distance import cdist

def main():
    p1 = np.array([[1, 2], [3, 4], [5, 6]])
    p2 = np.array([[2, 3], [4, 5], [6, 7]])
    dist = cdist(p1, p2)
    print(dist)

if __name__ == '__main__':
    main()

在numpy中应该避免使用for循环,如果无法应用矢量运算,可以考虑空间换时间。numpy远比想象得强大,我曾用numpy计算空间中几百万个点的法向量,几乎瞬间完成。题主可以把问题具体化,我们一起来探讨一下。