2016-04-05 4 views
3

私は私が働いてきたアプリケーションのいくつかのために有用かつ高速になってきたPythonで[scipy.spatial.distance.pdist()][1]の利用に興味を持っています。使用PDIST()

私は、メトリックによって定義されたカスタムではなく、標準的なデフォルトの距離の指標ですペアワイズ距離関数を使用する必要があります。私は、次のようeuclidean距離関数を使用したくないと仮定し、簡単な例を作ってみましょう:

Y = pdist(X, 'euclidean') 

代わりに私がユークリッドの機能を自分で定義し、pdist()に関数や引数として渡したいです。 euclidean距離関数の実装をこの関数に渡して、まったく同じ結果を得るにはどうすればよいですか。この質問への答えは、私が興味を持っている方法で関数を使用するのに役立ちます。

MATLABでは、私は `pdist() 'をPythonで使う方法を知っています。あなたの提案

答えて

6

ためのおかげでdocumentation for pdistの例があります:あなたが代わりにラムダ関数の通常の関数を使用したい場合は

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

dm = pdist(X, lambda u, v: np.sqrt(((u-v)**2).sum())) 

同等のようになり

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

def dfun(u, v): 
    return np.sqrt(((u-v)**2).sum()) 

dm = pdist(X, dfun)