3
是否有scipy.spatial.distance.squareform的逆函數?如果不是,編寫它來處理巨大距離矩陣的最佳方法是什麼?scipy.spatial.distance.squareform的逆函數
是否有scipy.spatial.distance.squareform的逆函數?如果不是,編寫它來處理巨大距離矩陣的最佳方法是什麼?scipy.spatial.distance.squareform的逆函數
根據該文檔,squareform
是其本身的逆:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.squareform.html
其實,這拉姆達是相當有效率:
In [1]: unsquareform = lambda a: a[numpy.nonzero(numpy.triu(a))]
例如:
In [2]: scipy.spatial.distance.pdist(numpy.arange(12).reshape((4,3)))
Out[2]:
array([ 5.19615242, 10.39230485, 15.58845727, 5.19615242,
10.39230485, 5.19615242])
和
In [3]: unsquareform(scipy.spatial.distance.squareform(scipy.spatial.distance.pdist(numpy.arange(12).reshape((4,3)))))
Out[3]:
array([ 5.19615242, 10.39230485, 15.58845727, 5.19615242,
10.39230485, 5.19615242])