2012-02-14 218 views
2

我有这个代码需要一个矩阵并创建矩阵中每个元素的相邻相邻元素的数组。元素是我将用作查找字典中值的键的id。 “Hooked”以极高的格式编写此代码,帮助我大展拳脚。我想要做的是将邻居列表导出到csv文件。我在下面的代码中遇到了writer.writerows命令的问题。我收到了一个预期序列的错误。我相信这是因为它希望编写一个列表,其中我的输出格式在邻居列表之间没有任何逗号。将numpy数组导出到文本文件

从代码的输出如下所示:

[0. 0. 309. 0. 0. 10. 11. 12.]

[0 309 310 0 1 11 12. 13.]

[309 310 311 0 2 12 13 14]

[310 311 312 1。3. 13. 14. 15.]

[311. 312. 313. 2. 4. 14. 15. 16.]

[312 313 314 3 5 15 16 17]

[313 314 315 4 6 16 17 18]

[314。 315. 316. 5. 7. 17. 18. 19.]

[315 316 317 6 8 18 19 20]

[316 317 318 7。 9. 19. 20. 21.]

这里是代码:

from numpy import * 
    import sys 
    import csv 

    k = 1 

    #Create nearest neighbors 
    Xidx, Yidx = mgrid[-k:k+1,-k:k+1] 

    #Remove the center (0,0) index 
    center = (Xidx==0) & (Yidx==0) 
    Xidx = Xidx[~center] 
    Yidx = Yidx[~center] 

    data = loadtxt("H:\SWAT\NC\GRID_FIDS2.txt") 
    #print data 

    for dx in range(11): 
     for dy in range(11): 
      FID = data[dx,dy] 
      #print FID 
      NL = data[Xidx+dx,Yidx+dy] 
      print NL 
      f = open("H:\SWAT\NC\Pro_NL.txt", 'wt') 
      try: 
       writer=csv.writer(f) 
       writer.writerows(NL) 
      finally: 
       f.close() 
    ''' 
    dx,dy = 0,4 
    print "Cell Value data[%i,%i] = %f " % (dx, dy, data[dx,dy]) 
    print "k=%i nearest neighbors: "%k, data[Xidx+dx, Yidx+dy] 
    '''  
    ' 

理想情况下,我希望对csv文件具有所有FID值的一列,第二列具有与FID值相对应的邻居列表(NL)。我很欣赏这方面的任何投入......我一整天都在测试不同的东西而没有成功!

回答

3

交替使用CSV对象,你可以按如下构造代码:

f=open("out_file","w") 
... 
for dx in range(11): 
    for dy in range(11): 
     FID = data[dx,dy] 
     ..... 
     NL = data[Xidx+dx,Yidx+dy] 
     f.write(str(NL)) 
f.close() 
+0

这么简单...啊!感谢您的帮助,稍微格式化它看起来棒极了! – Linda 2012-02-14 15:42:32