2012-12-10 2 views
-1

대륙에서만 데이터를 플롯하려고했습니다. 전에 이것에 관한 질문을했고 대답은 here입니다. 이제 코드에서 구현하면 오류없이 프로그램이 실행됩니다.대륙에서만 데이터를 플로팅 할 때 프로그램에서 오류없이 영원히 실행됩니다.

그러나 RUNS FOREVER. ctrl + C을 사용하여 강제 종료하면 "if not (map.is_land(X[i], Y[i])):"으로 추적되므로 여기에 잘못된 것이 있다고 생각합니다. 그러나 나는 그것을 알아낼 수 없다. 여기

이 아닌 대륙 데이터를 따기와 그들을 제거 관련 코드의 일부이다 : 당신이 for 루프를 사용하기 때문에

X, Y = map(Lon,Lat) 
ocean = [] 
for i in range(len(X)): 
    if not (map.is_land(X[i], Y[i])): 
     ocean.append(i) 

X_new = np.delete(X, ocean) 
Y_new = np.delete(Y, ocean) 
HDO_new = np.delete(HDO, ocean) 
+0

프로그램 사용중인 메모리 양은 어느 정도입니까? 스왑으로 넘어진다면, 상황이 너무 느려질 수 있습니다. – tacaswell

답변

1

이 프로그램 어쨌든 중지해야 유일한 문제가 X 얼마나 큰 . 나는 두 제안을 할 수 있습니다

1)

2) 당신이 파이썬 2를 사용하는 경우, xrange 대신 range를 사용하려고 얼마나 큰 볼 cicle에 대한 들어가기 전에 len(X)의 값을 인쇄 해 봅니다. x

수십만 개의 요소가있는 목록을 사용하는 것이 느린 것 같습니다. 가능하면 작은 데이터 샘플을 사용해보십시오

+0

예, 매우 큽니다. 그것에는 거의 700,000의 입장이있다. 감사. – ZYX