2016-09-05 2 views
-1

데이터 포인트의 근접성에 대한 지리적 좌표를 분석하고 검색하기 위해이 코드를 작성했습니다. 필자는 데이터 포인트가 너무 많아서 PyCharm의 출력이 과부하가되고 나에게 많은 말도 안되는 소리가 들려왔다. 그 이후로 저는 True/False 결과를 내 컴퓨터의 개별 문서로 작성하여이 문제를 해결하려고 노력했습니다.파이썬의 출력 파일에 데이터 결과를 쓰는 방법

이 코드의 핵심은 file1의 좌표와 file2의 모든 요소의 근접성을 분석하는 것입니다. 그런 다음 근접성을 공유하는 모든 좌표 일치를 리턴하십시오. 아래에서 볼 수 있듯이 중첩 된 for 루프를 작성하여 이렇게하는 것이 일종의 무차별 전략 일 수 있습니다. 따라서 누군가 더 세련된 솔루션을 제공한다면 더 자세히 알게 될 것입니다. 나는이 코드를 실행하면

import numpy as np 
import math as ma 

filename1 = "C:\Users\Justin\Desktop\file1.data" 
data1 = np.genfromtxt(filename1, 
        skip_header=1, 
        usecols=(0, 1)) 
        #dtype=[ 
          #("x1", "f9"), 
         #("y1", "f9")]) 
#print "data1", data1 

filename2 = "C:\Users\Justin\Desktop\file2.data" 
data2 = np.genfromtxt(filename2, 
         skip_header=1, 
         usecols=(0, 1)) 
         #dtype=[ 
          #("x2", "f9"), 
          #("y2", "f9")]) 

#print "data2",data2 

def d(a,b): 
    d = ma.acos(ma.sin(ma.radians(a[1]))*ma.sin(ma.radians(b[1])) 
       +ma.cos(ma.radians(a[1]))*ma.cos(ma.radians(b[1]))*  (ma.cos(ma.radians((a[0]-b[0]))))) 
    return d 

results = open("results.txt", "w") 

for coor1 in data1: 
    for coor2 in data2: 
     n=0 
     a = [coor1[0], coor1[1]] 
     b = [coor2[0], coor2[1]] 
     #print "a", a 
     #print "b", b 

    if d(a, b) < 0.07865: # if true what happens 
     results.write("\t".join([str(coor1), str(coor2), "True", str(d)]) + "\n") 

    else: 
     results.write("\t".join([str(coor1), str(coor2), "False", str(d)]) + "\n") 
results.close() 

은 내가 오류 메시지입니다 :

results.write("\t".join([str(coor1), str(coor2), "False", str(d)]) + "\n") ValueError: I/O operation on closed file

나는 내 문제는 내가이 쓰기 저장하고 구성 할 수 있겠 방법을 이해하지 않는 것이 생각 내 컴퓨터에 의미있는 형식의 파일. 그래서, 아무도 조언이나 제안이 있다면 나는 그 지원에 대해 매우 감사 할 것입니다!

답변

관련 문제