2012-08-09 5 views
0

scipy에서 pdist을 호출 할 때 누락 된 값을 어떻게 지정할 수 있습니까? 즉, 함수는 여기에 설명 :scipy에서 pdist에 누락 된 값을 지정

pdist(X, "euclidean") 

하지만 X 문자열 "NA" 같이 누락 된 값이 포함될 수 있습니다 그리고 당신은 그가 X 사이 페어의 비교에서 제외 할 : 예를 들어

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

당신이있는 경우 의 열. 내가 찾고있는 동작은 X에있는 열 쌍 사이의 유클리드 거리를 구할 때 누락 된 값을 고려하지 않는 것입니다.

답변

1

가장 좋은 방법은 배제 할 포인트에 대해 np.nan으로 X 배열을 채우는 것입니다. 예를 들어, X와 (10,2) 배열을 2 차원의 경우를 가정 :

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

의는 제외 할 가정 해 봅시다 X [7] 계산에서 그런 다음

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

, 당신 ' my_dist에는 제외 된 요소와의 거리 계산과 관련된 쌍에 대해 'nan'이 있음을 알 수 있습니다. 여러 요소를 제외 할 수 있습니다.

마스크 된 배열을 사용하는 것이 더 좋지만, pdist는 마스크 된 배열을 무시하고 어쨌든 데이터를 사용합니다. 그러나 출력이 my_dist 인 경우 마스크 배열로 변환하여 나중의 배열 작업을 방해하지 않도록 할 수 있습니다.

my_dist = np.ma.array(my_dist, mask = ~np.isfinite(my_dist)) 
관련 문제