1

pdistscipyを呼び出すときに欠損値を指定するにはどうすればよいですか? つまり、ここで説明されている関数:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html

たとえば、次の場合:

pdist(X, "euclidean")

しかしX、文字列のような欠損値が含まれている可能性があり、それらを の列"NA"間のペアごとの比較で除外する必要がありXます。私が探している動作は、の列のペア間のユークリッド距離を取得するときに欠損値を考慮しないことですX

4

1 に答える 1

2

最良の方法は、除外するポイントのX配列をnp.nanで埋めることです。たとえば、X a(10,2)配列の2Dケースを想定すると、次のようになります。

import numpy as np
X = np.random.rand(10, 2)

X[7]を計算から除外したいとします。

X[7] = np.nan
my_dist = pdist(X, "euclidean")

次に、my_distに、除外された要素との距離の計算を含むペアの「nan」があることがわかります。複数の要素を除外できます。

より良いアイデアは、numpyのマスクされた配列を使用することですが、pdistはマスクされた配列を無視し、とにかくデータを使用します。ただし、出力my_distを取得したら、それをマスクされた配列に変換して、nansが将来の配列操作の邪魔にならないようにすることができます。

my_dist = np.ma.array(my_dist, mask = ~np.isfinite(my_dist))
于 2012-08-09T22:41:14.220 に答える