2016-02-15 35 views
-1

我有100个点,我想将它们分成10个不同的组bades,它们距离10个参考点的距离并将每个组写入文件。 我写我的程序为:在文件列表中写一个点的列表

from numpy import * 
from math import * 
from time import * 
a=1.0 
b=1.0 
nx=10  # number of mesh in x 
ny=10  # number of mesh in y 
dx=a/nx 
dy=b/ny 
data=loadtxt("cvt_squate.txt",float) 
n=data.shape 

fids = [] 
for i in range(n[0]): 
    ii=str(i) 
    fids.append(open('file' + ii + '.txt', 'w')) 

def calculateDistance(x1,y1,x2,y2): 
    dist = sqrt((x2 - x1)**2 + (y2 - y1)**2) 
    return dist 

for i in range(nx) : 
    for j in range(ny) : 
     distance=10.0 
     grain=1000 
     x=(i+0.5)*dx 
     y=(j+0.5)*dy 
     for k in range (n[0]): 
      d = calculateDistance(x,y,data[k,0],data[k,1]) 
      if d<distance: 
       distance=d 
       grain=k 
     print(grain) 
     kk=str(grain) 
     outdata = vstack((x,y)).T 
     savetxt('file' + kk + 'txt', outdata) 

但在我的结果,我在每个文件的点,而不是组有一个点。

回答

0

没有任何示例数据,很难看到代码应该如何工作。但首先我建议你重写你的进口:

import numpy as np 
import math 

我看不到你在哪里使用时间模块。

如果您将结果定义为您的For k循环外的列表并将所有参考点附近的点追加到此列表中。例如:

outdata = [] 
for k in range(n[0]): 
    d = calculateDistance(x,y,data[k,0],data[k,1]) 
    if d<distance: 
     outdata.append([data[k,0],data[k,1]]) 

应该让你更接近你想要的位置。