값을 일치시키는 여러 가지 방법을 살펴 봤는데이 경우 가장 좋은 옵션이 무엇인지 잘 모르겠습니다. X, Y, DX, DY :거리 값으로 표의 기존 보정 값 집합 (표에있는)을 일치시킵니다.
-233200.0 -233200.0 -19.4 21.4
-212000.0 -233200.0 -23.7 23.8
-190800.0 -233200.0 -26.8 26.4
-169600.0 -233200.0 -39.0 33.5
-148400.0 -233200.0 -39.0 33.5
-127200.0 -233200.0 -46.0 38.4
-106000.0 -233200.0 -47.2 38.2
-84800.0 -233200.0 -49.3 38.8
-63600.0 -233200.0 -50.8 35.8
-42400.0 -233200.0 -49.4 32.1
내 두 번째 테이블이 길이 (529)의 유사한 야수 : I 1) 및 입력 표 4 열 및 316 행있는 것을 인덱스 KX 켄터키, KDX을 Kdy는 :
1 -3995 213531 -44.1 32.7
2 -25446 213433 -48.6 37.0
3 -3175 169047 -44.7 19.7
4 -831 40968 -8.7 -15.1
5 -2771 147269 -33.1 1.3
6 -43705 82864 3.5 -5.3
7 -24925 191012 -46.2 30.4
8 -25982 236253 -58.1 48.8
9 -46318 191012 -48.2 31.2
목표는 X의 각각에 대해, Y (316 점), I는, 가장 가까운 지점 KX, 켄터키를 찾아 X, Y, DX, DY있는 목록을 반환하고자한다 Kx, Ky, Kdx, Kdy.
내가 함께 316 점 긴 거리 DMIN 만들 수 있습니다 이러한 파일 읽기 : 나는 반환하려고하면,
dmin=[]
for i in range(len(xf)):
for y in range(len(xK)):
dist=np.sqrt((x[i]-xK[y])*(x[i]-xK[y])+(y[i]-yK[y])*(y[i]-yK[y]))
dmin.append(np.min(dist))
그러나이 xK를, YK, dxK, DYK 난 단지 절반을 커버 (316 개) 값을 얻을 범위의 x, y 원본 316 점의 점.
for i in range(len(xf)):
for y in range(len(xKnn)):
dist=np.sqrt((x[i]-xK[y])*(x[i]-xK[y])+(y[i]-yK[y])*(y[i]-yK[y]))
dmin.append(np.min(dist))
ymatch.append(yKnn[i])
xmatch.append(xKnn[i])
dxmatch.append(dxKnn[i])
dymatch.append(dyKnn[i])
은 내가 DMIN에 해당하는 경우 KX, 켄터키에서 업데이트 할 인덱스를 쓸 수 있다면 나는 테이블을 조인 수 있기 팬더에 이러는 살펴 보았다. 나는 작은 데이터 프레임에서 dKnn 열을 정의 할 수 있기
d={'x': x, 'y': y, 'dx': dx, 'dy': dy}
df=pd.DataFrame(data=d)
dKnn={'xK': xK, 'yK': yK, 'dxK': dxK, 'dyK': dyK}
dfKnn=pd.DataFrame(data=dKnn)
그러나, 여기에 내가 문제 다 퉜다.
마지막으로 나는 scipy.spatial.KDTree 루틴을 검색해 왔지만 하나의 배열 만 받아들이도록 설계된 것처럼 일치 된 dxK, dyK를 반환하는 방법을 찾을 수 없었습니다. 팬더 데이터 프레임이 앞으로 가장 희망적인 방법 인 것처럼 보이지만 나는 매우 붙어있어 모든 제안을 환영합니다.
저는 귀하의 문제에 대해 다소 혼란스러워합니다. 당신은 이것에 대해 자세히 설명해 주시겠습니까? 그러나 xK, yK, dxK, dyK를 반환하려고하면 x, y 원본 316 격자의 범위의 절반 만 덮는 316 값을 얻을 수 있습니다. –