pythonで距離行列を計算する
求めるものがすぐには出てこなかったのでメモしておく。
距離行列が欲しい際にはscipy.spatial.distanceを使う
例えば、
from scipy.spatial import distance n = 10 data = [[random() for i in range(n)] for i in range(n)] dist_vec=distance.pdist(data)
これは距離行列の上三角部分だけを返してくれる。
距離行列はそもそも対角成分が0の対称行列なので、
上三角部分だけベクトルで返してくれれば情報として十分である。
これを距離行列に変換したければ、
dist_mat=distance.squareform(dist_vec)
でできる。
なお、逆変換もこれでできるらしい。
距離行列を直接求めるのであれば、
distance.cdist(data, data)
でもいい。